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

0

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

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

Место 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]

большое спасибо

  • 1
    Проверьте MySQL GROUP_CONCAT.
Теги:
select

2 ответа

0

Если вы хотите, чтобы телефонные номера были в порядке, используйте опцию 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

Использовать 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
  • 0
    большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню