Попытка реализовать 2 внешних соединения с помощью оператора OR. Неверный синтаксис? - PullRequest
0 голосов
/ 25 апреля 2018
SELECT 
user_id, (TblA)
username, (TblA)
count(TblB.friend1) AS friend1total, (TblB)
count(TblC.friend1) AS messageTotal (TblC)
FROM 
    TblA
    LEFT OUTER JOIN TblB
    (
            ON 
            (TblB.friend1 = TblA.user_id and requeststatus = 0)
            OR 
            (TblB.friend2 = TblA.user_id and requeststatus = 0)
    )
        LEFT OUTER JOIN TblC
        (
            ON 
        (TblC.friend1 = TblA.user_id)
        OR 
        (TblC.friend2 = TblA.user_id)
    )
group by user_id, username

Моя ошибка синтаксиса SQL говорит - # 1064 - В вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с '(ON (TblB.friend1 = TblA.user_id и reportstatus') в строке 8

1 Ответ

0 голосов
/ 25 апреля 2018

теперь это будет работать:

SELECT 
user_id, (TblA)
username, (TblA)
count(TblB.friend1) AS friend1total, (TblB)
count(TblC.friend1) AS messageTotal (TblC)
FROM 
    TblA
    LEFT OUTER JOIN TblB
    ON 
    (
            (TblB.friend1 = TblA.user_id and requeststatus = 0)
            OR 
            (TblB.friend2 = TblA.user_id and requeststatus = 0)
    )
    LEFT OUTER JOIN TblC
    ON 
    ( 
        (TblC.friend1 = TblA.user_id)
        OR 
        (TblC.friend2 = TblA.user_id)
    )
group by user_id, username

я просто изменил ваш код

ON 
    (
            (TblB.friend1 = TblA.user_id and requeststatus = 0)
            OR 
            (TblB.friend2 = TblA.user_id and requeststatus = 0)
    ) 

вместо

(
           ON            
           (TblB.friend1 = TblA.user_id and requeststatus = 0)
            OR 
            (TblB.friend2 = TblA.user_id and requeststatus = 0)
    ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...