我正在嘗試編寫一個從3個表中拉出來的SQL查詢,並且無法實現我需要的結果。我想返回與特定類別配對的所有屬性名稱(標籤),並將這些屬性與來自該類別中特定資產的值配對,該值可能沒有與每個屬性配對的值。3表,SQL查詢
我想所有的屬性,類別4,與值配對的資產135。資產135沒有財產3或4的設定值,所以我想:
| property_name | property_value |
|:--------------|:-------------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
| Model # | |
| Type | |
這裏是我的查詢:
SELECT property.property_name, asset_property.property_value
FROM property
LEFT OUTER JOIN category_property
ON property.property_id = category_property.property_id
INNER JOIN asset_property
ON asset_property.property_id = property.property_id
WHERE category_property.category_id = 4
AND asset_property.asset_id = 135
得到的數據:
| property_name | property_value |
|:--------------|:-------------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
這是因爲我的缺失2屬性AND asset_property.asset_id = 135
H是表表: *星號僅表示測試用例中的行。
表:財產
| property_id | property_name |
|:-----------:|:--------------|
| 1 | Fixture ID |*
| 2 | Manufacturer |*
| 3 | Model # |*
| 4 | Type |*
| 5 | Lamp Type |
表:asset_property
與屬性值對資產。
| asset_id | property_id | property_value |
|:--------:|:-----------:|:---------------|
| 129 | 1 | A5 |
| 129 | 2 | Black & Decker |
| 129 | 3 | 1230-02 |
| 129 | 4 | Incandescent |
| 135 | 1 | E6 |*
| 135 | 2 | Linden |*
| 147 | 1 | G1 |
表:category_property
對類別與它的屬性。
| category_id | property_id |
|:-----------:|:-----------:|
| 4 | 1 |*
| 4 | 2 |*
| 4 | 3 |*
| 4 | 4 |*
| 7 | 2 |
| 7 | 5 |
我試過所有不同的JOIN類型,HAVING,GROUP BY ....找不到它。如果有人明白我需要什麼,我會非常感激幫助!謝謝!
爲了澄清,我需要回到這些套的成績:在property_id
| property_name |
|:--------------|
| Fixture ID |
| Manufacturer |
| Model # |
| Type |
和
| property_value |
|:---------------|
| A5 |
| Black & Decker |
加入他們的行列:
| property_name | property_value |
|:--------------|:---------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
| Model # |
| Type |
但由於沒有記錄4和5在asset_property table
中,這些屬性的property_name
沒有顯示。
| property_name | property_value |
|:--------------|:---------------|
| Fixture ID | A5 |
| Manufacturer | Black & Decker |
型號
類型
我希望他們到E所示。我要全部類別4的產權名稱將被退回並與資產135的任何匹配property_values配對。
所以對於水果類我希望所有的屬性名稱返回(顏色,季節,味道)。顏色屬性蘋果沒有確定,但我還是想返回所有的屬性類型,因此它們可以被改變或填寫:
| property_name | property_value |
|:--------------|:---------------|
| Color | |
| Season | Fall |
| Taste | Tart |
你想要的結果是遠離標準化表的一個支點。如果可以的話,考慮規範化你的模式,這使得查詢更簡單。這個模式看起來像Magento對我來說,你無法控制,但如果它是自定義的,你可以節省一些工作。 –