2010-09-07 2 views
4

Я пытаюсь сделать довольно сложный запрос вMySQL; комплекс для меня, по крайней мере.Два левых соединения и объединение в 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'.

Где я иду не так, и как я должен действительно выполнить этот запрос?

ответ

6

Алиас ваш стол, как:

LEFT JOIN users u1 ON u1.uid = friends.fid1 
LEFT JOIN users u2 ON u2.uid = friends.fid2 
+0

Это решило одну проблему. Теперь я возвращаюсь «ERROR 1222 (21000): используемые операторы SELECT имеют разное количество столбцов». Есть предположения? –

+1

+1: Всегда делайте псевдонимы (стол и столбец) уникальными –

+1

@ Джош Смит: С уважением, это другая ошибка, поэтому задайте новый вопрос. –

2

Вы писали слева присоединиться два раза с различными полями таблиц, кажется, когда он получил разобрать, так дайте им псевдоним, а затем присоединиться к ним с friends Таблица

LEFT JOIN users users1 ON users1.uid = friends.fid1 
LEFT JOIN users users2 ON users2.uid = friends.fid2 
Смежные вопросы