MySQL,使用GROUP BY和HAVING时选择列值
我想为具有2个或更少属性的资产(在MySQL,使用GROUP BY和HAVING时选择列值,mysql,Mysql,我想为具有2个或更少属性的资产(在资产属性表中有2行或更少行)选择资产id、类别名称和夹具id)。到目前为止,我所拥有的只有asset\u id和category\u name。并非所有资产都存在夹具ID。如果是,它将是property\u id为1的行中的property\u值 期望结果的示例 资产属性表: | asset_id | property_id | property_value | |:--------:|:-----------:|:---------------| | 100
资产属性
表中有2行或更少行)选择资产id
、类别名称
和夹具id
)。到目前为止,我所拥有的只有asset\u id
和category\u name
。并非所有资产都存在夹具ID
。如果是,它将是property\u id为1的行中的property\u值
期望结果的示例
资产属性表:
| asset_id | property_id | property_value |
|:--------:|:-----------:|:---------------|
| 100 | 1 | A-6 |*
| 100 | 6 | Blue |
| 104 | 1 | CC-7 |*
| 104 | 6 | Blue |
| 104 | 4 | 12" |
| 105 | 1 | B-1 |*
| 108 | 1 | HR-1 |*
| 109 | 3 | 500 |
| 109 | 4 | 1" |
*property\u id
1是Fixture id
预期结果:
| asset_id | category_name | property_value*|
|:--------:|:-------------:|:---------------|
| 100 | Flooring | A-6 |
| 104 | Flooring | CC-7 |
| 105 | Kitchen Equip | B-1 |
| 108 | Plumbing | HR-1 |
| 109 | Plumbing | |
*property\u value
是Fixture ID
,如果property\u ID
是1
到目前为止我的MYSQL
MySQL:
SELECT asset_property.asset_id, category_name
FROM asset_property
LEFT JOIN asset
ON asset.asset_id = asset_property.asset_id
LEFT JOIN category
ON category.category_id = asset.category_id
GROUP BY asset_property.asset_id
HAVING COUNT(asset_property.asset_id) <= 2
因此,我还需要选择属性值,其中属性id=1
。我希望这是有意义的,谢谢 可能开关/案例适用于此查询
SELECT asset_property.asset_id, category_name,
( CASE property_id
WHEN 1 THEN property_value
ELSE 0
END
)
FROM asset_property
LEFT JOIN asset
ON asset.asset_id = asset_property.asset_id
LEFT JOIN category
ON category.category_id = asset.category_id
GROUP BY asset_property.asset_id
HAVING COUNT(asset_property.asset_id) <= 2
选择资产属性、资产id、类别名称、,
(案例属性)
当1时,则属性_值
其他0
结束
)
来自资产和不动产
左连接资产
ON asset.asset\u id=asset\u property.asset\u id
左连接类别
在category.category\u id=asset.category\u id上
按资产\u属性进行分组。资产\u id
拥有COUNT(asset\u property.asset\u id)可能开关/案例适合此查询
SELECT asset_property.asset_id, category_name,
( CASE property_id
WHEN 1 THEN property_value
ELSE 0
END
)
FROM asset_property
LEFT JOIN asset
ON asset.asset_id = asset_property.asset_id
LEFT JOIN category
ON category.category_id = asset.category_id
GROUP BY asset_property.asset_id
HAVING COUNT(asset_property.asset_id) <= 2
选择资产属性、资产id、类别名称、,
(案例属性)
当1时,则属性_值
其他0
结束
)
来自资产和不动产
左连接资产
ON asset.asset\u id=asset\u property.asset\u id
左连接类别
在category.category\u id=asset.category\u id上
按资产\u属性进行分组。资产\u id
具有计数(资产属性.资产id)