1

我需要通过搜索具有特定类别的业务来找到具有组 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() 中获得了汽车旅馆类别[显然是由于条件 cat_name = 'Motels']

所以请有人告诉我如何在单个查询中做到这一点。我不想使用 2 个查询。

这是数据

|------------业务-------------- |

|business_id|business_name|business_city

在此处输入图像描述

|------业务猫地图--------------|

|-----id------|---business_id---|--cat_id--|

在此处输入图像描述

|------------------------|

|-----id-----|------猫名----|

在此处输入图像描述

我的查询返回以下

企业ID|-企业名称-|--猫--|

在此处输入图像描述

所以在这里我只买了一只猫,但公司有不止一只猫,我想在猫栏中显示

4

2 回答 2

1

老兄,这是你的分析器

SELECT a. * , GROUP_CONCAT( c.b_type_name ) 
FROM business a
INNER JOIN business_what b ON b.business_id = a.business_id
INNER JOIN business_type c ON c.b_type_id = b.b_type_id
WHERE b.business_id
IN (

SELECT business_what.business_id
FROM business_type
JOIN business_what ON business_type.b_type_id = business_what.b_type_id
WHERE business_type.b_type_name LIKE  '%Hotel%'
)
GROUP BY a.business_id
于 2013-11-01T19:20:58.520 回答
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
于 2013-11-01T11:37:12.103 回答