2010-04-24 2 views
1

У меня есть две таблицы rooms и users. Я хочу получить только rooms.room_id, users.user_name с user_id = 1. Я могу получить результат всех пользователей со следующей SQL ...Помощь с MySQL Query?

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 

Когда я так, чтобы фильтровать результат с user_id = 1 ... Я получил сообщение об ошибке.

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms where rooms.user_id = 1 
LEFT JOIN users ON rooms.user_id = users.user_id 

Что мне делать?

+0

Спасибо всем! Это отлично работает :) – Devyn

ответ

1

Написать запрос как:

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
    from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 
WHERE roows.user_id = 1 
3

ANSI-92 ПРИСОЕДИНЯЙСЯ синтаксис (когда вы видите LEFT JOIN ...) диктует, что положение WHERE приходит после JOIN (ы):

SELECT r.room_id, 
      r.user_id, 
      u.user_name 
    FROM ROOMS r 
LEFT JOIN users ON u.user_id = r.user_id 
    WHERE r.user_id = 1 

Вы были близки.

1

Try:

select rooms.room_id, 
     rooms.user_id, 
     users.user_name 
from rooms 
LEFT JOIN users ON rooms.user_id = users.user_id 
WHERE rooms.user_id = 1 

Синтаксис простого SQL SELECT запроса:

SELECT [a list of fields] 
FROM [a single table name maybe with an alias, or a join of tables] 
WHERE [a filter, applied over some fields of the tables in the FROM clause] 

Вы можете прочитать вводный учебник here.

1

Это помогает указать, какую ошибку вы получите.

Я думаю, что проблема заключается в том, где положение должно быть после того, как стыки

select rooms.room_id, 
    rooms.user_id, 
    users.user_name 
from rooms 
    LEFT JOIN users ON rooms.user_id = users.user_id 
where rooms.user_id = 1 
Смежные вопросы