Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL,使用GROUP BY和HAVING时选择列值_Mysql - Fatal编程技术网

MySQL,使用GROUP BY和HAVING时选择列值

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个或更少属性的资产(在
资产属性
表中有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)