Два джоина на одну таблицу

Solon

Новичок
Два джоина на одну таблицу

Есть таблица игроков . Так как у игрока может быть двойное гражданство, в таблице есть поля NationalityID1 и NationalityID2 , национальности выносены в отдельную таблицу countryes. Как чедлать два джоина на одну таблицу?
Я пытался вот так
SELECT * FROM Players
LEFT JOIN Countryes ON Players.NationalityID1 = Countryes.ID
LEFT JOIN Countryes ON Players.NationalityID2 = Countryes.ID
ORDER BY Surname, Name;
так не работает, помогите пожалуйста правильно составить запрос
Только желательно что бы мы не получали две строки ответа,как бы мы получили это сделав так
LEFT JOIN Countryes ON Players.NationalityID1 = Countryes.ID or Players.NationalityID2 = Countryes.ID
Хочеться получить то-то такое
+--------+---------+---------+
| Name | Nation1 | Nation2 |
+--------+---------+---------+
| Сергей | Россия | Италия |
+--------+---------+---------+
 

Adelf

Administrator
Команда форума
навскидку:

SELECT * FROM Players
LEFT JOIN Countryes с1 ON Players.NationalityID1 = с1.ID
LEFT JOIN Countryes с2 ON Players.NationalityID2 = с2.ID
ORDER BY Surname, Name;

ну или Countryes AS с2... чет начинаю забывать SQL.
 

Solon

Новичок
Adelf, Да так но mysql выдает два поля Name (от c1 и c2), и соответсвенно когда мы парсим результат в php выдается только последнее поле Name(хотя mysql выдает правильно) причем такой запрос не срабатывает
SELECT Players.Name, Players.Surname, Players.Burthday, Players.Role, c1.Name AS Country1, c2.Name AS Country2 FROM Players
LEFT JOIN Countryes с1 ON Players.NationalityID1 = с1.ID
LEFT JOIN Countryes с2 ON Players.NationalityID2 = с2.ID
ORDER BY Players.Surname, Players.Name;
 

Adelf

Administrator
Команда форума
ну должен срабатывать ващет.. че пишет то при последнем запросе?

в PHP они конечно тоже приходят. mysql_fetch_row вместо fetch_assoc, например это подтвердит. Но желательно с запросом всетаки разобраться.
 

Solon

Новичок
пишет, как нетрудно тогодаться Unknown column 'c1.Name' in 'field list'

------------------------------
mysql_fetch_row вместо fetch_assoc, например это подтвердит
нехотелось бы переписовать класс работы с mysql

-~{}~ 19.09.09 13:01:

НДА... спасибо уже разобрался ...
Вы специально написали
LEFT JOIN Countryes с1 ON Players.NationalityID1 = с1.ID
русские "C" вместо латинских "C"? XD
Но все равно спасибо за помощь
 

findnext

Новичок
LEFT JOIN Countryes ON Players.NationalityID1 = Countryes.ID or Players.NationalityID2 = Countryes.ID
тут ты сам уже почти правильно написал. 2 джойна не обязательно делать. Достаточно оператора OR в ОN.

LEFT JOIN Countryes c ON Players.NationalityID1 = C.ID OR Players.NationalityID2 = C.ID
 
Сверху