2010-06-30 71 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)