データベースに 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
しかし、これは最初のシネマを返すだけです。
データベースに 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
しかし、これは最初のシネマを返すだけです。
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
このクエリを試してください
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;
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