1

アイテムとカテゴリ用に 2 つのテーブルがあります。アイテムは複数のカテゴリに属する​​ことができます。テーブルについては、次のフィドルを確認してください。

http://sqlfiddle.com/#!2/6b248/5

ここで、両方のテーブルから欠損値を見つける必要があります。つまり、一部のアイテムでは、カテゴリ テーブルのカテゴリ値がゼロです。項目テーブルにカテゴリ値があるが、カテゴリ テーブルから完全に欠落している他のいくつかの項目の場合。カテゴリ値がゼロのカテゴリ テーブルの項目については、次のクエリを使用しています。

SELECT item_id,itemname,category_name FROM item i JOIN category c ON i.category_id=c.category_id GROUP BY c.item_id HAVING MAX(i.category_id)=0 ORDER BY i.item_name

エントリがカテゴリ テーブルから欠落しているアイテム テーブルからアイテムをフェッチするように変更するにはどうすればよいですか。つまり、カテゴリ値がゼロのアイテムとカテゴリ テーブルから欠落しているアイテムの両方が必要です。

4

2 に答える 2

1

何かのようなもの

select i.*
from items as i
where
    not exists
    (
         select * 
         from categories as c
         where c.item_id = i.item_id and c.cat_id <> 0
    )
于 2013-08-07T06:28:31.987 に答える
0
SELECT i.item_id,i.name,c.cat_name FROM 
items AS i LEFT OUTER JOIN categories AS c ON i.item_id=c.item_id 
GROUP BY c.item_id HAVING MAX(c.cat_id)=0 OR c.cat_name is null
ORDER BY i.name
于 2013-08-07T06:33:49.403 に答える