Помогите с MySQL Query? - PullRequest
       15

Помогите с MySQL Query?

1 голос
/ 25 апреля 2010

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

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

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

Ответы [ 4 ]

3 голосов
/ 25 апреля 2010

Синтаксис ANSI-92 JOIN (когда вы видите 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 голос
/ 25 апреля 2010

Напишите запрос как:

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
1 голос
/ 25 апреля 2010

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

Я бы предположил, что проблема в том, что предложение where должно быть после объединений

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 
1 голос
/ 25 апреля 2010

Попробуйте:

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]

Вы можете прочитать вводное руководство здесь .

...