4

結合クエリを探しています。実際には、メインの 3 つのテーブルがあります。

- Category [cat_id(PK), cat_name]
- Product  [pro_id(PK), cat_id(FK),pro_name]
- Company  [com_id(PK), cat_id(FK),pro_id(FK),...]

これで、リスト ビューにカテゴリのリストが表示されました。したがって、ユーザーが削除をクリックすると、選択したカテゴリが削除されます。

これで、単一のテーブルを確認できます同じcat_idものが他の2つのテーブルで使用されているかどうか?

if(check cat_id is used in other tables or not)  
{
alert("you can't delete because category is used by some other table(s).");
}
else
{
alert("record deleted.");
}

NOT INこれで、likeを使用して単一のテーブルから同じことを確認できます。

DELETE FROM CATEGORY WHERE cat_id NOT IN (SELECT DISTINCT cat_id FROM PRODUCT);

これにより、選択した cat_id が PRODUCT テーブルで使用できない場合にのみ削除されます。

JOIN QUERYも以下のように試してみましたが、

SELECT CATEGORY.cat_id FROM CATEGORY INNER JOIN PRODUCT ON CATEGORY.cat_id =  PRODUCT.cat_id;

しかし、私は3番目のテーブルを使用する方法がわかりません.だから、どうすれば複数のテーブルをチェックできるのだろうか.

このクエリの解決にご協力ください。

4

2 に答える 2

4
DELETE FROM CATEGORY WHERE cat_id NOT IN 
(SELECT DISTINCT cat_id FROM PRODUCT) AND cat_id NOT IN
(SELECT DISTINCT cat_id FROM COMPANY)
于 2013-09-20T10:19:06.310 に答える