Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Составить запрос для связанных таблиц

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: помогите составить запрос..
Koc
Отправлено: 06 Сентября, 2016 - 12:53:06
Post Id



Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




Помогите составить запрос, для связанных таблиц

Что имеем:

Цитата:
Таблица: post
id | name | published
1 | Пост 1 | 1
2 | Пост 2 | 0
3 | Пост 3 | 0
4 | Пост 4 | 1

Таблица: image
id | post_id | file
1 | 1 | img1.jpg
2 | 1 | img2.jpg
3 | 3 | img3.jpg
4 | 4 | img4.jpg


Нужно одним или несколькими запросами вытянуть все опубликованные посты (published = 1) с их картинками. Чтобы в итоге запрос вернул массив типа такого:

PHP:
скопировать код в буфер обмена
  1.  
  2.         [0] => array(
  3.                 'id' => '1',
  4.                 'name' => 'Пост 1',
  5.                 'images' => array(
  6.                         [0] => 'img1.jpg',
  7.                         [1] => 'img2.jpg',
  8.                 )
  9.         ),
  10.         [1] => array(
  11.                 'id' => '4',
  12.                 'name' => 'Пост 4',
  13.                 'images' => array(
  14.                         [0] => 'img4.jpg'
  15.                 )
  16.         )
  17. )
  18.  


Заранее спасибо!
 
 Top
armancho7777777 Супермодератор
Отправлено: 06 Сентября, 2016 - 17:27:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 4526
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 221 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.id, p.name, p.published, img.files AS images
  2.   FROM post AS p
  3.   JOIN (SELECT post_id, GROUP_CONCAT(file SEPARATOR ',') AS files
  4.           FROM images GROUP BY post_id) AS img
  5.     ON img.post_id = p.id

Картинки будут разделены запятыми.
 
 Top
Koc
Отправлено: 08 Сентября, 2016 - 10:47:23
Post Id



Новичок


Покинул форум
Сообщений всего: 35
Дата рег-ции: Авг. 2011  


Помог: 0 раз(а)




armancho7777777 пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.id, p.name, p.published, img.files AS images
  2.   FROM post AS p
  3.   JOIN (SELECT post_id, GROUP_CONCAT(file SEPARATOR ',') AS files
  4.           FROM images GROUP BY post_id) AS img
  5.     ON img.post_id = p.id

Картинки будут разделены запятыми.


Большое спасибо!
Все подошло, я правда там добавил условие WHERE в конце, чтобы вытягивало только опубликованные записи.

(Отредактировано автором: 08 Сентября, 2016 - 11:48:06)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB