|
|
|
|
SELECT `flats`.*, `flats_img`.`url`, `flats_descr`.`list`
FROM `flats`, `flats_img`, `flats_descr`
WHERE flats.id = flats_img.flat_id and flats_img.url LIKE 'logo.%' and
flats.id = flats_descr.flat_id and flats_descr.lang = $my_lang and
flats.show = 1
ORDER BY flats.position
|
Вот так получается, если нет, например, в `flats_img` logo.%, то запрос не осуществляется вообще.
Как бы его так написать чтобы даже если нет данных в таблицах(`flats_img`, `flats_descr`) соответствующих `flats` то всё равно выбиралось бы независимо от этого `flats`.* ?
Заранее спасибо :) | |
|
|
|
|
|
|
|
для: sl1p
(11.12.2008 в 23:34)
| | насколько соображаю , можно поставить таблицы в зависимость от первой ,той из которой оюязательны результаты, при помощи LEFT JOIN ... ON например.
и перенести условия из WHERE , в ON
, и GROUP BY
но что-то у mysql , бывает никак не получается ставить две таблицы в зависимость от одной
, а только по очереди :) поэтому кагбы может быть и не срастаться , но я-бы попробовал.
ато остаётся только использовать функции такие как IFNULL() или IF()
и подзапросы
:) | |
|
|
|
|
|
|
|
для: xx77
(12.12.2008 в 03:07)
| | Я конечно попробовал бы но ниразу не юзал ни LEFT JOIN ни ON :D
Был бы рад хотябы на примере запроса) дальше уже сам както потыкаю xD | |
|
|
|
|
|
|
|
для: sl1p
(12.12.2008 в 03:38)
| |
SELECT a.*, b.`url`, c.`list`
FROM `flats` a
LEFT JOIN `flats_img` b ON b.flat_id = a.id AND b.url LIKE 'logo.%'
LEFT JOIN `flats_descr` c ON c.flat_id = a.id AND c.lang = $my_lang
WHERE a.show = 1
GROUP BY a.id
|
вроде так | |
|
|
|