2010-02-21 48 views
1

在MySQL選擇訂購產品我有3個表:從muliple表

  • orderProductsorderIdproductIdproductValue
  • productsproductIdproductName
  • valuesproductIdproductValueproductValuePrice )。

我需要選擇訂購產品(產品編號,名稱,價值,價格)與定義orderId。 如何用一個MySQL查詢做到這一點?

回答

1

你可以使用一個left joinorderProducts表返回行的這其他表中不存在相應的行。任何缺少的列將爲NULL,允許您標記錯誤條件。默認joininner 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> 
+0

你忘了把另一個條件放在'left join values'中,必須是'left join values v on(v.productId = op.productId)和(v.productValue = op.productValue)' – 2010-02-21 13:47:45

+0

@Semyon:對,這很難在不知道數據模型的情況下查看。回答編輯 – Andomar 2010-02-21 14:51:17

1

您可以通過一個連接,像這樣做:

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 
+0

他說:「有定義的orderId」,需要WHERE子句,不是嗎:) – Sarfraz 2010-02-21 13:08:58

+0

@Sarfraz - 'Order'是一個關鍵詞在我的頭上還有明顯...良好的漁獲,謝謝! – 2010-02-21 13:26:08

0

.......

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 
相關問題