2017-04-27 14 views
0

私は2つのテーブルブランドとgeneric_Drugsを持っています。 1つのgeneric_Drugsモデルは、多くのブランドモデルを持つことができます。したがって、generic_Drugs IDはブランドモデルに格納されます。しかし、ジェネリック医薬品が削除されると、そのIDはまだブランドモデルに存在します。これは、ユーザーの要求に応じてアプリケーションが動作する方法です。あるテーブルから他のテーブルへの条件を確認するループ

generic_drugクラステーブルにgeneric_drug idsが存在するブランドアイテムのみを取得するデータベースからブランドアイテムを取得する手法が必要です。

例:

ブランドモデルは - genericDrugsテーブル

+-----------+ 
    | id  |  
    +-----------+ 
    | 2001  | 
    | 2002  | 
    | 2003  | 
    | 2005  | 
    +-----------+ 

は、だから私は条件がで適用使っブランドから、すべてのブランドのアイテムを一覧表示する技術を必要とする - テーブル

+--------+-----------+ 
    | id  |Generic id |  
    +--------+-----------+ 
    |  1 | 2001  | 
    |  2 | 2001  | 
    |  3 | 2002  | 
    |  4 | 2003  | 
    |  5 | 2004  | 
    |  6 | 2004  | 
    |  7 | 2005  | 
    |  8 | 2006  | 
    |  9 | 2006  | 
    +--------+-----------+ 

Generic_Drugsブランドブランド表のgeneric_drug ID、generic_drugs表にgeneric IDが存在するブランドのみを表示:

そこで私は、クエリを実行するとそれだけで取得する必要があります

+--------+-----------+ 
    | id  |Generic id |  
    +--------+-----------+ 
    |  1 | 2001  | 
    |  2 | 2001  | 
    |  3 | 2002  | 
    |  4 | 2003  | 
    |  5 | 2004  | 
    |  7 | 2005  | 
    +--------+-----------+ 

答えて

0

2つの方法で同じことができます。一つはINNER JOIN

SELECT Id 
FROM Brand b 
INNER JOIN generic_Drugs gd ON gd.id=b.`Generic id` 

OR

を使用しているブランドは、私は示唆している、ジェネリック薬なしでは存在できない場合は、他の一つはEXISTS

SELECT Id 
FROM Brand b 
WHERE EXISTS(SELECT 1 
       FROM generic_Drugs 
       WHERE b.`Generic id`=id) 

を使用することですジェネリックドラッグを削除するときに対応するブランドを削除します。選択クエリで調整する必要はありません。ブランド表のGeneric idFKとして追加し、対応するブランドレコードを削除することができます。

0

私達はちょうどINNER JOINを使用することができます。

SELECT DISTINCT(b.id) 
FROM brands b INNER JOIN genericDrugs gd 
ON b.`Generic id` = gd.id 

一致するレコードのみが取得されます。

関連する問題