带OR-Clause的SQL查询

时间:2015-07-27 04:14:08

标签: php mysql sql join

我有两个表,我正在尝试组合并从其中一个表中获取数据,具体取决于查询。

我的sql查询:(哪个不起作用)

SELECT *
FROM contacts
    INNER JOIN users
    (ON contacts.user_id_sender = users.id
    WHERE contacts.user_id_sender = '$user_id' AND contacts.status = 1)
        OR
    (ON contacts.user_id_receiver = users.id
    WHERE contacts.user_id_receiver = '$user_id' AND contacts.status = 1)

基本上,我有一个类需要返回'users',其中'contacts'是用户id的一部分,状态为1。

这背后的想法是Contact / Friend系统表。我基本上有一个Users和Contacts表,我需要根据哪些联系人与我们的用户ID相关来返回用户数据。

1 个答案:

答案 0 :(得分:2)

ON中的()括号位置不正确+ WHERE子句中有ON语句,这是不允许的。 这看起来就像你写的那样,但在句法上起作用:

SELECT *
FROM contacts
INNER JOIN users
ON (contacts.user_id_sender = users.id 
     AND contacts.user_id_sender = '$user_id' 
     AND contacts.status = 1)
    OR
(contacts.user_id_receiver = users.id
AND contacts.user_id_receiver = '$user_id' AND contacts.status = 1)