我有表tbl_restaurant(name,cuisine_id,....)和tbl_cuisine(cuisine_id,cuisine_name)
在tbl_restaurant中,Cuisine_id字段包含逗号分隔的值,例如(3,6,9,20,31),当我尝试使用join来拉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之前我应该解析吗?请提出任何建议。
您可以使用FIND_IN_SET()函数来联接两个表。
试试这个:
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 |
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句