1

Тема: Вибрати всі дані дані з 3 таблиць

Три таблиці: cms_map_items, cms_map_markers, cms_otzyvy. ПОтрібно вибрати всі дані з таблиці cms_otzyvy і деякі дані з таблиці cms_map_items базуючись на тому що поле cms_otzyvy.target_id співвідноситься з полем cms_map_items.id. Крім цієї інформації потрібно дістати всі рядки з таблиці cms_map_markers навіть ті які не підпадають під умову cms_map_items.id = cms_map_markers.item_id.

SELECT i.id, o.review, o.mark, i.title, i.seolink, m.addr_country, m.addr_city, m.addr_prefix, m.addr_street, m.addr_house, m.addr_room, m.item_id
FROM cms_map_items AS i INNER JOIN cms_map_markers AS m 
    ON i.id = m.item_id
    INNER JOIN cms_otzyvy AS o
     ON i.id = o.target_id
    WHERE o.target_id = 45 AND m.addr_country LIKE '%Россия%' AND m.addr_city LIKE '%Москва%'
ORDER BY o.id DESC LIMIT 13;

Використать два SELEC і UNION?

2

Re: Вибрати всі дані дані з 3 таблиць

Спробуйте отак:

SELECT i.id, o.review, o.mark, i.title, i.seolink, m.addr_country, m.addr_city, m.addr_prefix, m.addr_street, m.addr_house, m.addr_room, m.item_id
FROM cms_map_otzyvy o
LEFT JOIN cms_map_items i ON o.targetId = i.Id
LEFT JOIN cms_map_markers m ON m.itemId = i.Id
WHERE o.target_id = 45 AND m.addr_country LIKE '%Россия%' AND m.addr_city LIKE '%Москва%'
ORDER  BY o.Id DESC
LIMIT 13;

3 Востаннє редагувалося Invader (21.10.2014 15:43:37)

Re: Вибрати всі дані дані з 3 таблиць

Результат аналогічний моєму: два рядка вибрані по умові

WHERE o.target_id = 45 AND m.addr_country LIKE '%Россия%' AND m.addr_city LIKE '%Москва%'

без включення полів які не відповідають даній умові а також умові o.target_id = i.id. Щось я затупив завів вас не туди. Чи можливо отримати дані які відповідають двом вищенаведених умовам а також всі інші які не відповідають цим умовам?

4

Re: Вибрати всі дані дані з 3 таблиць

Тоді, схоже, UNION треба.

Можливо, просто у відсутніх полях стоятимуть NULL, а сам запит буде страшним і непривабливим.

А принципово саме таку вибірку отримати? Яка задача стоїть?

5

Re: Вибрати всі дані дані з 3 таблиць

Потрібно виводити інформацію про всі відмічені на карті об'єкти по тому місту в якому вони знаходяться, по країні або про конкретний об'єкт по ідентифікатору (ідентифікатор в БД). В таблиці cms_map_items знаходяться відмічені об'єкти, таблиця cms_map_markers містить адреси, широту довготу і деяку іншу інфу. Таблиця cms_otzyvy призначеня для зберігання відгуків і оцінок.