2009-07-28 1 views
0

Вот моя ситуация. У меня есть таблица пользователя и таблица password_reset, которая ссылается на таблицу пользователя.Есть ли способ написать это как один запрос?

Я хочу запустить один запрос, который будет возвращать некоторые поля из строки password_reset, которая ссылается на их строку пользователя. Тем не менее, я хочу вернуть только адрес электронной почты пользователя, если у них нет строки в password_reset. Вот что я до сих пор, что работает в том случае, если у них есть строка password_reset, но нет, если они этого не делают (в этом случае он не возвращает никаких строк вообще).

SELECT u.email, p.code, p.expires 
FROM users u, password_resets p 
WHERE u.username = :username 
     AND u.id = p.user_id 

Как я могу это написать? Могу ли я сделать это только с одним запросом?

ответ

4
SELECT u.email, p.code, p.expires 
FROM users AS u 
LEFT JOIN password_resets AS p USING (u.id = p.user_id) 
WHERE u.username = :username 
+0

Спасибо. Думаю, мне действительно нужно читать мои встречи. – ryeguy

1
SELECT Users.email 
FROM Users 
    LEFT JOIN Password_resets ON Users.PrimaryKey = Password_resets.ForeignKey 
WHERE Password_resets.ForeignKey IS NULL 
1
SELECT u.email, p.code, p.expires 
    FROM users u 
LEFT JOIN password_resets p 
ON 
    u.id = p.user_id 
WHERE u.username = :username 
Смежные вопросы