2010-06-30 101 views
1

在連接條件中可以使用AND嗎?ANDING處於連接狀態?

例如:

SELECT * 
    FROM items 
LEFT JOIN products as prod ON prod.prod_id = items.prod_id 
LEFT JOIN partial as p ON p.prod_model = prod.prod_model 
         AND p.order_id=$order_id 
    WHERE order_id = $order_id 
ORDER BY prod.prod_weight ASC 

我猜它不會工作。 $ order_id是通過一個PHP變量傳入的。我想要發生的是,如果在部分表中有一行具有相同的order_id和prod_model,然後將它添加到行中,並且如果不是隻保留該項。*和prod。*

我知道那裏HAS做一個更好的方法來做到這一點,但我現在只是畫空白。

回答

0

您的查詢應該可以正常工作。

對於內部連接它的功能上等同於與二次加入標準ON子句或把它在WHERE子句中,但在你的情況,你正在做外連接讓您隨心所欲地與來ON子句,只是就像你寫的那樣。

1

您是否嘗試過並發現問題?是的,你可以做和聯合。

+0

我沒有試圖尚未運行它。只是想知道這是否有可能,或者是否有更好的解決方法。謝謝! – mahle 2010-06-30 18:03:05

+0

也許會更快地運行該查詢,看看發生了什麼,而不是在這裏詢問...... – 2010-06-30 18:35:35

0

我不知道,如果括號是強制性的,但如果你添加一些肯定是更清晰的:

LEFT JOIN partial as p ON (p.prod_model = prod.prod_model 
          AND p.order_id = $order_id)