|
|
|
Запросы из нескольких таблиц
|
|||
|---|---|---|---|
|
#18+
Запросы из нескольких таблиц. Читал книжку по 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_s.c_id = spec_spice.c_id AND spec_spice.c_id = spec_prod.c_id AND (spec_prod.prod='$form:prod' AND spec_spice.spice='$form:spice') OR (spec_prod_s.prod='$form:prod' AND spec_spice.spice='$form:spice' Мне кажется это не правильно. + Если c_id вообще не определено в table1 или table2, то c_id берется не зависимо от table3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2005, 16:08:00 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=651&tid=1853785]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
20ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 325ms |

| 0 / 0 |
