2017-01-18 9 views
0

に等しいところ、私は同じデータベース内の2つのテーブル持って選択します。MYSQL - 2つのフィールドは二つのテーブル

T1 - 
ID 
Make 
Model 
Series 
Variant 
MSN 

T2- 
ID 
Make 
Model 
MSN 
Reg 
location 
uname 
notes 

T1は、航空機のテーブルであり、T2は、ロギングテーブルです。 T2では、航空機ごとに多くのログを記録することができます。たとえば、マンチェスターとリバプールにG-VNEWを登録して航空機を記録できます。その後、その航空機が別の会社に売却され、その航空会社がG-DCAAに変更された場合、別の場所で同じ航空機を再び見ることができます。

のメイク/シリアルに等しいT2のすべてのフィールドを表示する私のウェブページに出力されたリストを作成したいと思います。

Select * from T2 where T2.Make=T1.Make and T2.MSN=T1.MSN order by T2.date DESC 

推論はメイク/ MSNの選択性は低いが、可能、ボーイング/エアバスは同じMSNで航空機を持っている可能性があることですbehined:これは、右のラインに沿っています。

+0

いずれの表にもシリアルは表示されません。シリアルはユニークなフィールドですか?もしそうなら、なぜメイクが必要なのですか? – kojow7

+0

こんにちは私の悪い - シリアル - MSN(Manafacturersシリアル番号)する必要がありますシリアル番号は、2つの異なるmanafacturersの2つの異なる航空機に適用される可能性があります。 –

+1

私は、MakeとModelの両方を複製する理由を理解していません。 T1のIDはユニークなプライマリキーになります。 T2の一意の主キーとなるT2のLogIDを作成し、T2の列としてIDを持って特定のT1エントリに戻します。または、私は何かを逃しています.... – user3741598

答えて

0

ここでINNER JOINを使用する必要があります。値を比較するために他のテーブルを使用しています。

Select * from T2 
Inner Join T1 
On T2.Make=T1.Make 
where T2.Make=T1.Make and T2.Serial=T1.Serial 
Order By T2.date DESC 

これを試してみてください...あなたのために働くでしょう...あなたのフィードバックを待っています。

関連する問題