|
|
|
| подскажите как сделать двух табличный запрос с несколькими условиями проверки?
например:
таблица1. столбец1, столбец2, столбец3, столбец4, столбец5
таблица2. столбец1, столбец2, столбец3
как выбрать нужные сроки по условию:
таблица1.строка2 = 1, таблица1.строка5 = таблица2.строка1, таблица2.строка3 = 3
спасибо! | |
|
|
|
|
|
|
|
для: Bvz
(13.11.2009 в 11:43)
| | так .столбецN или .строкаN ? | |
|
|
|
|
|
|
|
для: Trianon
(13.11.2009 в 12:00)
| | простите столбец
таблица1.столбец2 = 1, таблица1.столбец5 = таблица2.столбец1, таблица2.столбец3 = 3 | |
|
|
|
|
|
|
|
для: Bvz
(13.11.2009 в 12:05)
| | табличное выражение из двух связанных таблиц записывается как
`таблица1`
JOIN `таблица2` ON `таблица1`.`столбец5` = `таблица2`.`столбец1`
|
условия как обычно размещаются в разделе WHERE. | |
|
|
|
|
|
|
|
для: Trianon
(13.11.2009 в 12:09)
| | а как еще 2 условия добавить, через WHERE ? | |
|
|
|
|
|
|
|
для: Bvz
(13.11.2009 в 12:11)
| | Естественно.
Впрочем, если логика диктует одно из условий включить в условие соединения , возможно, такое условие добавят в ON | |
|
|
|
|
|
|
|
для: Trianon
(13.11.2009 в 12:14)
| | ок, разобрался! | |
|
|
|
|
|
|
|
для: Trianon
(13.11.2009 в 12:14)
| | на досуге читал мануал по MySQL, так вот там пишут
ON conditional_expr |
USING (column_list)
Никогда не следует указывать в части ON какие бы то ни было условия, накладывающие
ограничения на строки в наборе результатов. Если необходимо указать, какие строки должны
присутствовать в результате, следует сделать это в выражении WHERE.
|
как это понять? | |
|
|
|
|
|
|
|
для: Gendalf
(13.11.2009 в 12:55)
| | Никогда не следует указывать в части ON какие бы то ни было условия, накладывающие
ограничения на строки в наборе результатов.
Правильно пишут.
Но если есть задача наложить ограничение на условие сопоставления строки одной таблицы строке другой таблицы - вот тут оно и пригодится. Очень часто возникает в задачах нахождения отсутствия сопоставления строк. t_l LEFT JOIN t_r ON t_l.a = t_r.b AND t_r.x = y WHERE t_r.id IS NULL
Означает - строки t_l для которых не существует подходящих строк в t_r с полем x = y | |
|
|
|