Mysql - один запрос для одного ко многим - PullRequest
0 голосов
/ 05 мая 2019

У меня есть таблица с именем posts и другая таблица с именем attachments ...

A post может иметь много attachments ...

Итак, я создаю промежуточную таблицу с именем post_attachment ..

Как получить список posts данных, включая данные attachments в ЕДИНСТВЕННЫЙ ЗАПРОС ?

..

Пожалуйста, обратитесь ниже, чтобы было понятнее ...


Ниже приведена структура таблицы:

-

posts таблица имеет 4 столбца:

  1. ID
  2. название
  3. body_text

-

attachments таблица имеет 3 столбца:

  1. ID
  2. имя файла

-

post_attachment таблица имеет 2 столбца:

  1. post_id
  2. file_id

Ниже приведен пример post, который имеет несколько attachments

posts таблица:

enter image description here

-

attachments таблица:

enter image description here

-

post_-attachment таблица:

enter image description here

В приведенном выше примере сообщается, что post (ID: 1) имеет 3 attachments, то есть ID: 1,2 и 3.

Итак, вопрос в том, КАК ПОЛУЧИТЬ список постов, в которых будут столбцы posts.title, attachments.filename, attachments.file_url в ОДИН ЗАПРОС ?

1 Ответ

0 голосов
/ 05 мая 2019

Вы должны присоединиться к 3 столам:

select
  p.*, a.*
from post p
left join post_attachment pa on pa.post_id = p.id
left join attachments a on a.id = pa.file_id

LEFT JOIN необходим в случае, если к сообщению нет вложений.

...