2016-12-02 18 views
0

これで、単一のクエリを作成して必要なものを得る良い方法が見つからないだけです。私は2つのテーブルを持っています。外部キーを使用したSQLクエリ

第一テーブル

cure 
---- 
code (PK) 
name 

第二テーブル

interaction 
------------ 
cure_code1 (FK) 
cure_code2 (FK) 
interaction 

私が最初に治療法の名称、第二の硬化名前と単一行の相互作用を取得する必要があります相互作用テーブル。

答えて

0

何をトリップされる可能性がありますすることで、それぞれの外部キーのために1回、2回cureテーブルに参加しなければならないことである。二回

SELECT 
    c1.name AS first_cure, 
    c2.name AS second_cure, 
    i.interaction 
FROM 
    interaction i 
JOIN 
    cure c1 ON i.cure_code1 = c1.code 
JOIN 
    cure c2 ON i.cure_code2 = c2.code 

このクエリでは、我々はcureに参加したが、各1、独自のを与えますエイリアス(c1またはc2)を使用すると、列があいまいになることがあります。

アプリケーションに潜在的にnの治療法がある可能性がある場合、現在の表構造は機能しません。対話コードと治療コードを持つ3番目のテーブルが必要になりますので、多対多マッピングを行うことができます。

+0

lol私はこれを1回の参加でやろうとしましたが、これは私が期待していたよりも簡単でした!ありがとう!そしてええ、私はその愚かではない、完全にURクエリを理解する:D – Tomek

+0

なぜそれが動作しませんか?アプリケーションには治療法がありますが、1つの治療法は1回だけ反応します。 – Tomek

+0

実際には1回の結合で実行できますが、各JOIN制約またはIN文には「OR」が必要です。この方法はIMOのクリーナーです。 –

関連する問題