2

データベースに 1 対多の関係があります。 ここに画像の説明を入力

すべての映画館を CSV として 1 行に追加して、すべての都市を取得したいと考えています。私が試してみました:

SELECT city.*,CONCAT(cinema_name)
FROM city
LEFT JOIN cinema
ON cinema.city_id=city.city_id
GROUP BY city.city_id

しかし、これは最初のシネマを返すだけです。

4

3 に答える 3

16

CONCAT の代わりに GROUP_CONCAT を使用する

SELECT
  city.*,
  GROUP_CONCAT(cinema_name) AS `Cinemas`
FROM city
  LEFT JOIN cinema
    ON cinema.city_id = city.city_id
GROUP BY city.city_id
于 2013-02-25T13:13:37.173 に答える
1

このクエリを試してください

SELECT ct.city_id, GROUP_CONCAT(cinema_name) 
FROM cinema c, city ct
WHERE c.city_id = ct.city_id
Group BY c.city_id;
于 2013-02-25T13:14:52.813 に答える
1

V5.7 でテスト済みのMysqlの現在のバージョンでは、そのデータを json オブジェクトとして使用する場合は、これを試すことができます。

SELECT
  city.*,
  GROUP_CONCAT(
JSON_OBJECT(
'cinema_name', cinema_name
)) AS `Cinemas`
FROM city
  LEFT JOIN cinema
    ON cinema.city_id = city.city_id
GROUP BY city.city_id
于 2018-06-19T05:36:41.477 に答える