SQL: Как я могу получить более одной строки из другой таблицы с помощью соединения?(Вопрос начинающего) - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть две таблицы, одна с названиями мест и одна с телефонными номерами, например.Но каждое место может иметь более одного номера телефона.

Когда я пытаюсь ввести код ниже, он дублирует место, и я получаю:

Место 1 - Первый номер телефона

Место 1 - Второй номер телефона

И я хочу:

Место 1 - Первый номер телефона, второй номер телефона

Итак, мне нужен столбец «номер», чтобымассив с каждым числом, связанным с местом.Как видите, я не очень хорошо разбираюсь в SQL lol Большое спасибо.

Таблица 1 - Места:

| id         | name        | address .    |
|:-----------|------------:|:------------:|
| 1          |      Example|    Example   |
| 2          |      Example|    Example   |

Таблица 2 - Телефоны:

| id         | fgk_place   | number       |
|:-----------|------------:|:------------:|
| 1          |      1      |    9999999   |
| 2          |      1      |    8888888   |

Что я пытаюсь сделать:

SELECT places.id, name, phones.number
FROM places
LEFT JOIN phones ON phones.fgk_place = places.id

Что я получаю:

1, Example, 9999999
1, Example, 8888888

Что мне нужно:

1, Example, [9999999, 8888888]

Спасибоочень сильно

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Если вы хотите, чтобы телефонные номера были в порядке, вам следует использовать опцию ORDER BY в GROUP_CONCAT().

Кроме того, вы хотите установить разделитель на ', '.По умолчанию используется значение ',', поэтому вам нужна опция SEPARATOR.

Предполагается, что порядок основан на столбце id:

SELECT pl.id, pl.name,
       GROUP_CONCAT(ph.number ORDER BY ph.id SEPARATOR ', ') as numbers
FROM places pl LEFT JOIN
     phones ph
     ON ph.fgk_place = pl.id
GROUP BY pl.id, pl.name;
0 голосов
/ 07 февраля 2019

Использование group_concat

SELECT places.id, name, GROUP_CONCAT(phones.number)
FROM places
LEFT JOIN phones ON phones.fgk_place = places.id
GROUP BY  places.id, name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...