我希望为具有2个或更少属性的资产(在asset_id表中有2行或更少的行)选择category_name、category_name和Fixture ID。到目前为止,我只有asset_id和category_name。并不是所有资产都存在Fixture ID。如果是这样的话,它将是与property_id 1同一行的property_id 1。
期望结果示例
asset_property表:
| 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_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_value是Fixture ID,如果property_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

MySQL的结果:
| asset_property.asset_id | category_name |
|:-----------------------:|:--------------|
| 3048 | Parking Lot |
| 3519 | Kitchen |
| 3522 | Kitchen |
| 3597 | Flooring |
(etc...)所以我也需要SELECT的property_value WHERE,property_id = 1。我希望这是合理的,谢谢!
发布于 2012-05-01 13:33:58
也许开关/大小写适合这个查询。
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希望这有帮助..。
https://stackoverflow.com/questions/10398143
复制相似问题