Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 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
Цитата(Shustov @ 5.8.2005, 19:05)
Делаю с помощью UNION - проблем нет

Тогда в чем вопрос?
Если требуется соединение таблиц, то используем JOIN, если же выборка однотипных данных из неск-ких таблиц, то UNION.
Вообщем, сформулируйте понятно вопрос.

PS. Пожалуйста, используйте теги CODE. Это кнопочка "Код" над текстовым полем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)