24
Мар
2013

Составление запроса SQL с дополнительным условием

Дано: Таблицы с которыми работаю events (события) и photoreports (фотографии). С этимим все нормально (place_access, place_format,country, metrolist, place, citys, event_type, users)

Запрос для вывода события выглядит так:

SELECT * FROM (place_access, place_format,country, metrolist, place, citys, event_type, users) 
JOIN `events`   
ON(events.event_access = place_access.id)  
AND(events.event_place_id = place.place_id)  
AND(events.event_type = event_type.id)  
AND(events.event_format = place_format.id )  
AND(events.event_country = country.id )  
AND(events.event_city = citys.id )  
AND(events.event_metrolist = metrolist.id)  
AND(events.event_adder = users.id_user) WHERE `id_event`='1' LIMIT 1 

По итогам я вижу событие с ID = 1 и данные из смежных таблиц, так как данные в других таблицых фиксированные. Список фотографий хранится в таблице photoreports где у фотографий столбец photoreport_event_id равно заданным ID из таблицы events.

Если я делаю запрос с JOIN по аналогии:

SELECT * FROM (place_access, place_format,country, metrolist, place, citys, event_type, users, photoreports) JOIN `events` ON(events.event_access = place_access.id) AND(events.event_place_id = place.place_id)AND(events.event_type = event_type.id) AND(events.event_format = place_format.id)AND(events.event_country = country.id) AND(events.event_city = citys.id)AND(events.event_metrolist = metrolist.id)AND(events.event_adder = users.id_user)AND(photoreports.photoreport_event_id = '1') WHERE `id_event`='1' LIMIT 1      

Логично что условие соблюдается только при наличии изображения и наличия фотографии с заданным ID из таблицы events.

Если фотография есть, я вижу событие и могу вывести фотографию из photoreports, если фотографии нету я не вижу ничего включая само событие.

Как составить запрос так, чтобы событие выводилось в любом случае, а фотография только при наличии таких с ID события из таблицы events. Если фотографии нету, то это как бы игнорируется и просто выводится событие по заданному условию.

В идеале задумано что при наличии фотографий я смогу ее выводить так:
if ($ru->photo <> '') { $photo = 'код блока с картинкой'; } //Ну или как то так

Заранее спасибо.

Вопрос был решен

Источник: https://ru.stackoverflow.com/questions/205901/%D0%A1%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%B0-sql-%D1%81-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%BC-%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D0%B5%D0%BC

Тебе может это понравится...

Добавить комментарий