2013-12-11 139 views
2

我創建從情侶表MySQL中的視圖(在WordPress/WooCommerce)一欄,最後的結果應該是這樣的:選擇,如果條件滿足

id name price sku 
1  test 9.99 ABC 

到源數據表都設置這樣的:

Products表

id name 
1  test 

元數據表

product_id meta_key value 
1   price  9.99 
1   sku  ABC 

我遇到問題的部分是如何讓meta_key顯示爲最終視圖表中的列。

這是我迄今(它不工作,但也許它可以幫助顯示我要使用的邏輯,見下面第3-4行):

SELECT 
    products.id, 
    products.name, 
    metadata.value AS price IF meta_key = price 
    metadata.value AS sku IF meta_key = sku 
FROM `products` 
INNER JOIN `metadata` 
ON products.id = metadata.product_id 

回答

2

您需要添加您的附加條件加入到過濾meta_key,做一個連接你想使一列各類型的鍵:

SELECT 
    products.id, 
    products.name, 
    price.value AS price 
    sku.value AS sku 
FROM `products` 
INNER JOIN `metadata` AS price ON products.id = price.product_id AND price.meta_key = 'price' 
INNER JOIN `metadata` AS sku ON products.id = sku.product_id AND sku.meta_key = 'sku' 

你要知道,這將只顯示產品,同時具有價格和SKU中元數據表。 如果你想顯示產品有/或,更改INNER JOIN s到LEFT JOIN s

+0

嗡嗡..價格和SKU真的表嗎?我不知道我們可以參考 –

+1

這個字段的值,在這種情況下,它們是元數據表的別名,它在連接 – jmoerdyk

+1

上指定,這很好。在我的腦海中,開啓了新的SQL榮耀領域。 –