2012-02-26 2 views
1

У меня вопрос ... Предположим, что у меня есть таблица, в которой хранятся названия городов. что-то вроде этого:"select" dilemma

id name 
1 Los Angeles 
2 Madrid 

И у меня есть таблица для пользователей:

uid username locationid hometownid 
1 John  1   2 

, в котором Джон является пользователь, текущее местоположение в Лос-Анджелесе и его родной город Мадрид. Есть ли в любом случае, что я могу получить текущее имя пользователя и имя родного города в одной строке с запросом SELECT? Если это невозможно, есть ли у вас предложения по изменению структуры базы данных, чтобы это стало возможным?

ответ

4

Да, и это чрезвычайно тривиально - просто добавьте JOIN в каждое соответствующее поле в пользовательской таблице.

SELECT u.username, c1.name AS location, c2.name AS hometown 
FROM users AS u 
LEFT JOIN cites AS c1 ON u.locationid = c1.id 
LEFT JOIN cites AS c2 ON u.hometownid = c2.id 
WHERE u.id = 1 LIMIT 1;