1

テーブル tbl_restaurant(name,cuisine_id,....) と tbl_cuisine(cuisine_id,cuisine_name) があります

tbl_restaurant では、cuisine_id フィールドには (3,6,9,20,31) のようなコンマ (,) で区切られた値が含まれており、結合を使用してcuisine_name を取得しようとすると、上記の場合は最初の id (つまり: 3) のみが取得されます。クエリがありました:

SELECT tbl_restaurant.name, tbl_restaurant.cuisine_id, tbl_cuisine.cuisine_id,
tbl_cuisine.cuisine_name
FROM tbl_restaurant
LEFT JOIN tbl_cuisine ON tbl_restaurant.cuisine_id = tbl_cuisine.cuisine_id
WHERE tbl_restaurant.published =1
AND tbl_restaurant.id =$id

join または else を使用する前に解析する必要がありますか? 任意の提案をお願いします。

4

2 に答える 2

1

FIND_IN_SET と GROUP_CONCAT を使用する

SELECT r.name, r.cuisine_id, GROUP_CONCAT(c.cuisine_name)
FROM tbl_restaurant r
LEFT JOIN tbl_cuisine c ON FIND_IN_SET(c.cuisine_id, r.cuisine_id)
WHERE r.published =1 AND r.id = $id
GROUP BY r.id;

出力:

| NAME | CUISINE_ID | GROUP_CONCAT(C.CUISINE_NAME) |
|------|------------|------------------------------|
|  abc |    1,2,6,8 |    Nepali,Indian,Thai,Korean |
于 2015-01-21T07:51:05.447 に答える