2014-02-12 3 views
2

Предположим, у меня есть две таблицы: users и user_location_data. Мне нужно получить все записи в пределах users и связать их с соответствующими данными в пределах user_location_data, если он существует, но все равно получить данные пользователя, если это не так. Пример вывода:Ассоциированный, если существует

User ID | Name  | Location Data 
--------|----------|-------------------------- 
     2 | John  | 
     3 | Jane  | Lorem Ipsum 
     6 | Harry | 
     9 | Lloyd | Lorem Ipsum 
    22 | Patricia | Lorem Ipsum 

Это может быть легко достигнуто с помощью простого цикла и несколько запросов, но, кажется, немного неандертальца мне. Обычный реляционный запрос (например, SELECT * FROM users u, user_location_data uld WHERE u.user_id = uld.user_id) позволит получить только пользователей, имеющих соответствующую запись данных местоположения. Есть ли способ сделать это с помощью одного запроса?

+0

Полезно знать! Я буду следить за этим. – CodeMoose

ответ

4

Использование LEFT JOIN

http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html

SELECT * FROM users u LEFT JOIN user_location_data uld ON u.user_id = uld.user_id 
+1

Жаль, что я мог +2 это - один раз для правильного ответа, и один раз для потрясающей статьи. Это отвечает на многие вопросы, которые у меня были. Благодаря! – CodeMoose

+0

@CodeMoose Эта статья помогла мне миллион обратно в тот же день. Джефф Этвуд - первый создатель Stack Overflow. Вы должны вернуться и прочитать много своего блога :) http://www.codinghorror.com/blog/2008/04/introducing-stackoverflow-com.html – degenerate

Смежные вопросы