1

我想为具有 2 个或更少属性(表中的 2 行或更少行)的资产选择asset_idcategory_name和。到目前为止,我只有and 。可能并非对所有资产都存在。如果是这样,那将是从一行 Fixture IDasset_propertyasset_idcategory_nameFixture IDproperty_valueproperty_id 1

期望结果示例

资产属性表:

| 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_id1 是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_valueFixture ID如果property_id1

我的 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解释

MySQL的结果:

| asset_property.asset_id | category_name |
|:-----------------------:|:--------------|
| 3048                    | Parking Lot   |
| 3519                    | Kitchen       |
| 3522                    | Kitchen       |
| 3597                    | Flooring      |
(etc...)

SELECT所以我还需要property_value WHERE. property_id = 1我希望这是有道理的,谢谢!

4

1 回答 1

1

也许 switch/case 适合这个查询

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

希望有帮助..

于 2012-05-01T13:33:58.867 回答