#mysql #sql #join
#mysql #sql #Присоединиться
Вопрос:
У меня есть три похожие таблицы с одинаковыми полями, и одно поле имеет одинаковые значения. Нравится
Table1(Column1:USA,Column2:200)
Table2(Column1:USA,Column2:400)
Table3(Column1:USA,Column2:500)
Я хочу запросить данные следующим образом:
ColumnA Table1Value Table2Value Table3Value
USA 200 400 500
Я знаю, что база данных не нормализована, но я должен использовать то же самое, поскольку многие части приложения уже используют эту структуру
Ответ №1:
Select
t1.Column1 AS ColumnA,
t1.Column2 AS Table1Value,
t2.Column2 AS Table2Value,
t3.Column3 AS Table3Value
FROM Table1 t1
JOIN Table2 t2 ON t2.Column1 = t1.Column1
JOIN Table3 t3 ON t3.Column1 = t1.Column1
Комментарии:
1. Это будет работать до тех пор, пока в table2 и table 3 будет по 1 записи, соответствующей table1. Если в них может не быть записей, тогда вам нужны левые соединения. Если у них может быть более одной совпадающей записи, то вам может потребоваться дальнейшее разделение требований.
2. @HLGEM… Я понимаю это полностью, но ничего из этого не было указано OP. Я просто предоставлял сценарий, который будет работать непосредственно с предоставленными данными и требованиями.
3. О, я не говорю, что ваш ответ плохой, просто сообщаю оператору, что могут быть другие соображения, и его проблема может быть более сложной. Я поддержал вас.