Объединение результатов из нескольких таблиц с разной структурой

Рейтинг: 1Ответов: 1Опубликовано: 01.11.2014

Всем привет.

Столкнулся с проблемой объединения результатов запроса, который нужно получить из разных таблиц.

В общем, есть таблица новостей, пусть для простоты будет такая структура: id новости, заголовок, текст новости.

Есть таблица данных к новостям (пусть будут url картинок), структура: id данных, id новости, url картинки.

Каким образом можно "приклеить" к новости все ссылки на картинки?
То есть в идеале я хочу получить такое:
id новости, заголовок, текст новости, url картинки 1, url картинки 2, ...

LEFT JOIN/JOIN/RIGHT JOIN/... попробовал, прикрепляют только одну ссылку из всех.
Если вложить SELECT, то mysql также не позволяет вытащить более 1-й ссылки, т.е. тоже не подходит.

Хранить сразу html-код или bb-коды с ссылками на картинки непосредственно в тексте новости не хочу, очень сильно теряется гибкость.

Вариант с двумя запросами (сначала вытащить новость, потом все картинки к ней) заставит переписывать почти весь код проекта, хотелось бы его оставить как самый крайний вариант, если уж других вариантов совсем нет.

Заранее спасибо за любую помощь.

Ответы

▲ 2Принят

Почему это LEFT JOIN не подходит?

К примеру:

табл новостей
1|заголовок1|текст1
2|заголовок2|текст2
3|заголовок3|текст3

табл картинок
1|1|картинка1
2|1|картинка2
3|2|картинка3
4|2|картинка4
5|2|картинка5

Результатом запроса 
SELECT news.id, title, text, image FROM news LEFT JOIN images on news.id=newid

будет такая таблица
1|заголовок1|текст1|картинка1
1|заголовок1|текст1|картинка2
2|заголовок2|текст2|картинка3
2|заголовок2|текст2|картинка4
2|заголовок2|текст2|картинка5
.....
  обработка на php
$id=-10;
while ($data = mysqli_fetch_assoc($query)) 
{
if ($id!=$data['id'])
   {
   //тут выводим новость и 1ую картинку
   $id= $data['id'];
   }
else
{
   //тут выводим остальные картинки текущей новости
   }
}