2015-08-24 2 views
0

У меня есть две таблицы. Один для новостей и второй для изображений. Каждая новость может содержать 0-3 изображения (image_1, image_2, image_3 в новостях таблицы - его идентификатор). Теперь я пытаюсь получить все строки из таблицы изображений, но это возвращает мне только одну.Mysql множественное соединение между двумя таблицами

Как что (но это не работает)

select news.id as nid, image_1, image_2, image_3, photos.id as pid, big, small 
from news 
left join photos 
on image_1=photos.id, image_2=photos.id, image_3=photos.id 
order by nid desc 

ответ

0

Вы должны присоединиться к photos таблицу 3 раза с различными псевдонимами.

Но вы действительно должны скорее изменить свой дизайн стола. Добавить еще одну таблицу под названием news_photos

news_photos table 
----------------- 
news_id 
photo_id 

Затем вы можете удалить image столбцы из news таблицы.

После изменения вы можете выбрать новости со всеми фотографиями, как этого

select n.*, p.name 
from news 
left join news_photos np on n.id = np.news_id 
left join photos p on p.id = np.photo_id 
where n.id = 1234 
+0

Отличный пункт. Я собираюсь попробовать это и дать вам знать. Спасибо, сейчас. – Jessie

+0

Его работы. Спасибо. – Jessie

1

Даже @juergen предложил лучший вариант, а также руководствоваться, как решить вашу проблему на вашем пути, но если вы стил сталкиваешься вопрос как это сделать, то вы можете следовать ниже запроса-

SELECT p.id AS pid, n1.image_1, n2.image_2, n3.image_3, big, small 
FROM photos AS p 
LEFT JOIN news AS n1 ON n1.image_1=p.id 
LEFT JOIN news AS n2 ON n2.image_2=p.id 
LEFT JOIN news AS n3 ON n1.image_3=p.id 
ORDER BY n.id DESC; 
+0

Да, я сделал что-то подобное. Благодарю. – Jessie

Смежные вопросы