Как объединить строки из двух соединенных таблиц? - PullRequest
0 голосов
/ 03 июня 2018

Есть две таблицы, которые могут быть объединены, и отношение 1 to many.Я хочу, чтобы строки результатов были объединены.

Например:

Таблица 1: контакты

.------------.----------.
| contact_id | username |
:------------+----------:
|          1 | user1    |
:------------+----------:
|          2 | user2    |
:------------+----------:
|          3 | user3    |
'------------'----------'

Таблица 2: документы

.-------------.------------.----------.
| document_id | contact_id | filename |
:-------------+------------+----------:
|           1 |          1 | abc.txt  |
:-------------+------------+----------:
|           2 |          1 | bcd.txt  |
:-------------+------------+----------:
|           3 |          1 | cde.txt  |
:-------------+------------+----------:
|           4 |          2 | 123,txt  |
:-------------+------------+----------:
|           5 |          2 | 234.txt  |
:-------------+------------+----------:
|           6 |          3 | xyz.txt  |
'-------------'------------'----------'

Результат, который я хотел бы получить:

.------------.----------.---------------------------.
| contact_id | username |         filenames         |
:------------+----------+---------------------------:
|          1 | user1    | abc.txt, bcd.txt, cde.txt |
:------------+----------+---------------------------:
|          2 | user2    | 123.txt, 234.txt          |
:------------+----------+---------------------------:
|          3 | user3    | xyz.txt                   |
'------------'----------'---------------------------'

Обновлено:

SELECT c.contact_id, c.username, GROUP_CONCAT(d.filename) as filenames 
FROM contacts c 
LEFT JOIN documents d 
ON c.contact_id = d.contact_id 
GROUP BY c.contact_id

1 Ответ

0 голосов
/ 03 июня 2018

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

Чтобы ответить на ваш вопрос,

Что вы хотели бы сделать в этом случае, это выполнить INNER JOIN для ваших двух таблиц и иметь MYSQLфункция, GROUP_CONCAT();, в вашем SELECT утверждении.

Когда вы смотрите на свои две таблицы, у вас есть связный идентификатор (contact_id), который вы должны использовать в INNER JOIN, чтобы связать две таблицы вместе.

Затем вы, в конце, необходимо выполнить от GROUP BY до группы ваших результатов соответственно, то есть до группы результатов по contact_id .

Ваш SQL будет выглядетькак то так:

SELECT
  tbl_contacts.contact_id,
  tbl_contacts.username,
  GROUP_CONCAT(tbl_documents.filename) as file_name
FROM
  tbl_contacts
INNER JOIN
  tbl_documents ON tbl_contacts.contact_id = tbl_documents.contact_id
GROUP BY
  tbl_contacts.contact_id

Рабочая скрипта SQL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...