我需要通过搜索具有特定类别的业务
来查找具有组concat的业务的所有类别|------ business -------- |
|-business_id
|-business_name
|-business_city
|------ business_cat_map ----|
|-id
|-business_id
|-cat_id
|------ cat --------------|
|-cat_id
|-cat_name
这是简单的多类别关系
现在我想在数据库中查询其类别为(例如酒店)的商家,并使用group_concat()返回商家所属的所有猫的详细信息。
我正在玩这种查询,但似乎无法正常工作
SELECT a.*
GROUP_CONCAT(c.cat_name) as cats
FROM business a
INNER JOIN business_cat_map b
ON a.business_id = b.business_id
INNER JOIN cat c
ON c.cat_id = b.cat_id
WHERE cat_name = 'Motels'
GROUP BY a.business_id
我获得了所需的业务,但只获得了group_concat()中的Motels类别[显然是由于条件cat_name ='Motels']
所以有人告诉我如何在单个查询中执行此操作。我不想使用2个查询。
这里是数据
| ------------ 业务 -------------- |
| business_id | BUSINESS_NAME | business_city
| ------ business_cat_map -------------- |
| ------ ------ ID | --- --- business_id | --cat_id-- |
| -------- cat ---------------- |
| ----- ----- ID | ------ cat_name ---- |
我的查询返回以下
business_id | -business_name- | --cats-- |
所以在这里,我只得到一只猫,但是我想要在猫栏中显示多只猫
答案 0 :(得分:1)
老兄,这是你的回答
答案 1 :(得分:0)
SELECT a.*
GROUP_CONCAT(c.b_type_name) as cats
FROM business a
INNER JOIN business_cat_map b
ON a.business_id = b.business_id
INNER JOIN cat c
ON c.cat_id = b.cat_id
WHERE a.business_id in (
select x.business_id from business_cat_map AS x where x.cat_id = (
select y.cat_id from cat AS y where y.cat_name = 'Hotels'
)
)
GROUP BY a.business_id