2011-05-10 7 views
2

私はMySQL 5.0を使用しています。SQL結合ではない

私は基本的にリストアイテムテーブルとリストタイトルテーブルを持っています。各タイトルには60以上のアイテムがあり、すべてがテキストです。動的に私は、人々が包含または除外したいアイテムを持っているタイトルを返そうとしています。私のクエリは、基本的には次のとおりです。

Select Distinct TitleID from Titles 
left join Items on Items.titleID = Titles.titleID 
Where Items.Name not like 'Item 2' 

任意の項目は「項目2」のような名前を持っている場合、私はTitleIDを望んでいません。ただし、Titleに関連付けられた他の名前が59個ある可能性があるため、このクエリーは可能な限り返されます。TitleID

どうすれば私はTitleIDが見つかりましたか?それはあまり意味がありませんので、

答えて

1
Select Distinct TitleID from Items 
Where TitleID not in (
Select TitleID from Items 
Where Name like 'Item 2') 

は、しかし「アイテム2」にはワイルドカードがありません。

+0

ええ、ちょっとした例でした...それはちゃんと動作します!ありがとう。 –

0
SELECT t.TitleID 
    FROM Titles t 
    WHERE NOT EXISTS(SELECT NULL 
         FROM Items i 
         WHERE i.TitleID = t.TitleID 
          AND i.Name LIKE 'Item 2%') 
+0

ありがとうジョー!あなたのものはより良いフォーマットになっていますが、フィリップの方法との類似点もあります。 –

+0

@ Neeil M.両方の方法を必ずテストしてください。私は私の方がうまくいくと思っています。 –