Два левых соединения и объединение в MySQL - PullRequest
4 голосов
/ 07 сентября 2010

Я пытаюсь выполнить довольно сложный запрос в MySQL;сложнее для меня, по крайней мере.

Вот пример того, что я пытаюсь сделать:

SELECT * FROM friends
LEFT JOIN users ON users.uid = friends.fid1
LEFT JOIN users ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;

Я возвращаюсь: ERROR 1066 (42000): Not unique table/alias: 'users'.

Где я ошибаюсь, и как мне действительно выполнять этот запрос?

Ответы [ 2 ]

6 голосов
/ 07 сентября 2010

Псевдоним вашего стола, как:

LEFT JOIN users u1 ON u1.uid = friends.fid1
LEFT JOIN users u2 ON u2.uid = friends.fid2
2 голосов
/ 07 сентября 2010

Вы написали left join два раза с разными полями таблиц. Кажется, когда он получит анализ, дайте им псевдоним, а затем соедините их с friends Table

LEFT JOIN users users1 ON users1.uid = friends.fid1
LEFT JOIN users users2 ON users2.uid = friends.fid2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...