2009-07-28 81 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 2009-07-28 20:08:54

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 
相關問題