#mysql #select
#mysql #выберите
Вопрос:
Мой вопрос очень прост, но, похоже, я не могу найти здесь ответ.
Итак,
Все, что я хочу сделать, это выбрать из двух таблиц одновременно (с одинаковыми именами столбцов [id])
В настоящее время у меня есть
"SELECT * FROM table1 WHERE id='$id_var'"
но мне также нужно также проверить ‘table2’. Каков наилучший способ сделать это без создания второго запроса? Спасибо.
Шейн
Ответ №1:
SELECT * FROM table1 WHERE id='$id_var'
UNION ALL
SELECT * FROM table2 WHERE id='$id_var'
Ответ №2:
SELECT * FROM table1 WHERE id = '$id_var'
UNION ALL
SELECT * FROM table2 WHERE id = '$id_var'
Однако вопрос, который вы должны задать себе, заключается в том, почему у вас есть две таблицы с одинаковыми столбцами в первую очередь. Для меня это звучит как плохой дизайн базы данных.
Комментарии:
1. Спасибо за ваш ответ. Совпадают только имена столбцов, данные is — нет. На этот раз никакого плохого дизайна.
2. да, согласен, вы можете сохранить логический флаг в базе данных для разделения!
3. @shane: Это не обязательно означает, что это неплохой дизайн.
Ответ №3:
Вы также могли бы сделать это:
SELECT table1.id, table1.x, table2.y
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = $id;
Комментарии:
1. Операция очень неясна, но, похоже, ему может понадобиться ЛЕВОЕ СОЕДИНЕНИЕ или ВНУТРЕННЕЕ соединение.