2015-12-20 45 views
0

我有一個'產品類型屬性'表,其中列出了所有可能的產品屬性的名稱。Mysql - 從一個表中匹配標準和關係中的所有特定行(如果來自其他表)

在另一個表中,我給出了給定產品特定屬性的值。

我需要查詢數據庫以獲取特定產品類型的所有屬性名稱以及它們的值,如果它們具有任何屬性名稱而且沒有賦值。

例如

產品類型1:短衫
產品類型2:海報

ATTRIBUTES 

ID | PRODUCT_TYPE_ID | ATTRIBUTE NAME 
1 | 1    | Size 
2 | 1    | Colour 
3 | 1    | Style 
4 | 2    | Print Type 
5 | 2    | Paper Type 
6 | 2    | Paper Size 

在表「product_attributes」持有這些屬性的值(即還它鏈接到特定產品),我有:

產品1:男式T恤
產品2:大型海報

PRODUCT_ATTRIBUTES 

ID | PRODUCT_ID | ATTRIBUTE_ID | VALUE 
1 | 1   | 1   | Large 
2 | 1   | 2   | Blue 
3 | 1   | 3   | Mens 
4 | 2   | 4   | Screen print 

結果我想:
換來了產品類型的所有屬性,即使「打印類型」是與特定產品的分配值的唯一屬性。

ID | PRODUCT_ID | ATTRIBUTE_ID | ATTRIBUTE_NAME | VALUE 
1 | 2   | 4   | Print type  | Screen print 
2 | 2   | 5   | Paper type  | 
3 | 2   | 6   | Paper size  | 

我試過各種連接,但到目前爲止還沒有得到我想要的。以下內容返回其他產品的值,而不是我需要的特定值。

"SELECT 
pa.value AS value, 
pa.product_id AS product_id, 
ptal.id AS attribute_id, 
ptal.name AS attribute_name 
FROM product_type_attribute_labels ptal 
LEFT OUTER JOIN product_attributes pa ON ptal.id = pa.product_type_attribute_id 
WHERE ptal.product_type_id = :ptid 
GROUP BY ptal.id" 
+0

請添加所有的表,此時我錯過了標籤和產品表。 – davejal

回答

0

從我有這一刻下面的查詢已經可以提供一些幫助

select a.id,pa.id,ATTRIBUTE_ID,`ATTRIBUTE NAME`,value from attributes a 

join product_attributes pa on a.id=pa.ATTRIBUTE_ID 

where product_id = 2 

更改相應的product_id

檢查一些數據這sqlfiddle

相關問題