2017-01-18 4 views
0

У меня есть две таблицы в той же базе данных:MYSQL - Выберите, где два поля равны в двух таблицах

T1 - 
ID 
Make 
Model 
Series 
Variant 
MSN 

T2- 
ID 
Make 
Model 
MSN 
Reg 
location 
uname 
notes 

T1 является таблица самолетов и T2 является таблица регистрации. В T2 у нас может быть много журналов для каждого самолета - так, например, я могу зарегистрировать самолет с регистрацией G-VNEW в Манчестере и Ливерпуле. Поэтому, если этот самолет на более поздний срок будет продан другой компании, а затем изменит свой рег на G-DCAA, я мог бы затем снова увидеть тот же самолет в разных местах.

Я хочу создать список, указанный на моей веб-странице, который отобразит все поля в T2, которые равны Make/Serial в T1. Является ли это в правильном направлении:

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

Рассуждение behined/выбор делают MSN, что Boeing/Airbus может иметь самолет с той же MSN, маловероятно, но возможно.

+0

Я не вижу Серийный номер в любой таблице. Является ли Serial уникальным полем? Если да, зачем вам Make? – kojow7

+0

Привет, да, мой плохой - Последовательный - должен быть MSN (серийный номер Manafacturers). Серийный номер может применяться к двум различным самолетам двух разных манакуляторов. –

+1

Я не понимаю, почему вы дублировали Make, Model в обоих. Идентификатор в T1 будет уникальным первичным ключом; затем введите логин в T2, который будет единственным первичным ключом T2, а также ID в качестве col в T2, чтобы привязать его к определенной записи T1. Или, может быть, я что-то пропустил ... – user3741598

ответ

0

Здесь вы должны использовать INNER JOIN, так как bcz вы используете другую таблицу для сравнения значений.

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 

Попробуйте это ... Надеюсь, это сработает для вас ... Будет ждать ваших отзывов.

Смежные вопросы