在MySQL選擇訂購產品我有3個表:從muliple表
orderProducts
(orderId
,productId
,productValue
)products
(productId
,productName
)values
(productId
,productValue
,productValuePrice
)。
我需要選擇訂購產品(產品編號,名稱,價值,價格)與定義orderId
。 如何用一個MySQL查詢做到這一點?
在MySQL選擇訂購產品我有3個表:從muliple表
orderProducts
(orderId
,productId
,productValue
)products
(productId
,productName
)values
(productId
,productValue
,productValuePrice
)。我需要選擇訂購產品(產品編號,名稱,價值,價格)與定義orderId
。 如何用一個MySQL查詢做到這一點?
你可以使用一個left join
在orderProducts
表返回行的這其他表中不存在相應的行。任何缺少的列將爲NULL,允許您標記錯誤條件。默認join
是inner join
,並且只會返回兩個連接表中具有匹配條目的行。
select op.product id, p.name, v.productValue, p.productValuePrice
from orderProducts op
left join products p on p.productId = op.productId
left join values v
on v.productId = op.productId
and v.productValue = op.productValue
where op.orderId = <YourOrderId>
您可以通過一個連接,像這樣做:
Select o.orderId, p.productId, p.name, o.productValue, v.productValuePrice
From products p
Join values v on p.productId = v.productId
Join orderProducts o on p.productId = o.orderId
Where orderId = 5
他說:「有定義的orderId」,需要WHERE子句,不是嗎:) – Sarfraz 2010-02-21 13:08:58
@Sarfraz - 'Order'是一個關鍵詞在我的頭上還有明顯...良好的漁獲,謝謝! – 2010-02-21 13:26:08
.......
select p.productId, p.productName, o.productValue, v.prodctValuePrice from orderProducts o join products p on o.productId = p.productId join values v on v.productId = p.productId where p.productId = 1
你忘了把另一個條件放在'left join values'中,必須是'left join values v on(v.productId = op.productId)和(v.productValue = op.productValue)' – 2010-02-21 13:47:45
@Semyon:對,這很難在不知道數據模型的情況下查看。回答編輯 – Andomar 2010-02-21 14:51:17