| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Запрос из нескольких таблиц |
| Автор: Shustov Alexander 5.8.2005, 18:05 |
| Запросы из нескольких таблиц. Читал книжку по SQL, там достаточно подробно описана эта тема, но у меня остлось несколько вопросов. Как я понял при запросах из нескольких таблиц их нужно объеденять, т.е. находить пары (если 2 таблицы). А если нужно сделать запрос из 3 таблиц, но в них нет полей предок/потомок? Таблица 1 Поле Тип Атрибуты Ноль По умолчанию Дополнительно Действие id int(11) Нет auto_increment c_id int(11) Нет 0 prod int(100) Нет 0 Таблица 2 Поле Тип Атрибуты Ноль По умолчанию Дополнительно Действие id int(11) Нет auto_increment c_id int(11) Нет 0 prod_s int(100) Нет 0 Таблица 3 Поле Тип Атрибуты Ноль По умолчанию Дополнительно Действие id int(11) Нет auto_increment c_id int(11) Нет 0 spice int(100) Нет 0 Задача 1 Выбрать c_id, если table1.prod=param1 или table2.prod_s=param1 или table3.spice=param2 Делаю с помощью UNION - проблем нет Задача 2 Выбрать c_id, если table1.prod=param1 или table2.prod_s=param1 иtable3.spice=param2 Делаю так: SELECT DISTINCT spec_prod.c_id, spec_prod_s.c_id, spec_spice.c_id FROM spec_prod, spec_prod_s, spec_spice WHERE (spec_prod.prod='$form:prod' OR spec_prod.prod_s='$form:prod') AND (spec_spice.spice='$form:spice') Если c_id вообще не определено в table1 или table2, то берется значение которое есть в table3... |
| Автор: Ignat 10.8.2005, 09:15 | ||
Тогда в чем вопрос? Если требуется соединение таблиц, то используем JOIN, если же выборка однотипных данных из неск-ких таблиц, то UNION. Вообщем, сформулируйте понятно вопрос. PS. Пожалуйста, используйте теги CODE. Это кнопочка "Код" над текстовым полем. |