2016-10-06 5 views
0

で複数のテーブルの上にFIND_IN_SETの使用: データベース名:製品のMySQL - 次のように私のデータベース構造が何かに見えない関係

id ptype 
1 Cups 
2 Shirts 
3 Cups 
4 Mugs 
5 Fabric 
6 Mat 

データベース名:カテゴリー

id category ptype 
1 Clothes Pants, Shirts, Tshirts 
2 Other Mugs, Cups 

を、私はリストを取得したいですカテゴリテーブルのptypeにまだリストされていない別個のptype(製品テーブル)のリスト

結果は

ptype 
Fabric 
Mat 
は、私は、次のmysqlの選択クエリを使用してみましたが、それは、製品テーブルのすべてのptypeのために0としてFIND_IN_SETの値を返します

SELECT p.ptype, c.ptype, FIND_IN_SET(p.ptype,c.ptype) FROM products as p, categories as c WHERE FIND_IN_SET(p.ptype,c.ptype) < 1 

動作するようには思えません。

+0

カテゴリテーブルのptypeフィールドにコンマの後にスペースがありますか? – Shadow

+0

Ahhありがとうございます。私はそこにはいけないコンマの後にスペースを入れています。それを取り除くことも問題を解決します。これを回答に投稿すると、私はそれを問題の解決策として受け入れます。再度、感謝します –

答えて

1

categories.ptypeフィールドのコンマの後のスペースを削除して、クエリを機能させます。 find_in_set()はカンマで区切られた値のリストと針を比較し、カンマの後のスペースを検索する文字列の一部と見なすため、スペースを含まない文字列を検索すると一致するものは見つかりません。

関連する問題