
Postat în original de
FinalDestiny
am pus pe stackoverflow si la fel mi-au dat .
Totusi, ca sa nu raman si eu idiot, ce e u1 ? eu nu am u1.nume ..ce e u2 ? de unde u2.nume ?

Sunt aliasuri. fara ele, codul ar fi aratat astfel:
Cod:
SELECT `users`.`nume`, `users`.`nume`
FROM `friends` AS `f`
LEFT JOIN `users` ON `users`.`id`=`f`.`ID1`
LEFT JOIN `users` ON `users`.`id`=`f`.`ID2`
Dar mysql ti-ar fi dat eroare, pentru ca `users`.`id` era ambiguu, mysql nestiind la care tabela `users` sa se 'uite', din cele 2 LEFT JOIN'uri.
Si atunci este imperativ sa ai aliasuri, astfel incat sa precizezi clar la care LEFT JOIN te referi cand faci conditiile de legatura ON.
Si acum observ o greseala minora in codul initial (depinde cum folosesti rezultatul mai departe). Ar fi indicat sa ai aliasuri si la numele pe care le preiei. Mysql, intr-adevar, iti returneaza doua coloane, fiecare cu numele 'nume'.
Dar daca le preiei cu php, e posibil sa se suprascrie o coloana cu cealalta si sa ramai doar cu o singura coloana, deoarece au aceeasi cheie. (in php nu poti avea doua chei identice intr-un vector)
Astfel incat cea mai buna varianta ar fi
Cod:
SELECT `u1`.`nume` AS 'nume_prim',`u2`.`nume` AS 'nume_secund'
FROM `friends` AS `f`
LEFT JOIN `users` AS `u1` ON `u1`.`id`=`f`.`ID1`
LEFT JOIN `users` AS `u2` ON `u2`.`id`=`f`.`ID2`