2011-08-09 26 views
0

搜索我有3個表查詢在MySQL的

members (id, name, email) 
members_kids (id, member_id, kids_name, kids_age) 
member_kids_activity_preferences (id, kid_id, activity_id) 

我有一系列的活動(4, 10, 12, 14)

我需要做的是選擇不同的電子郵件地址從成員誰的孩子有4,10,12,14從偏好member_kids_activity_preferences表。我如何使用1查詢做到這一點?

傑森

回答

2

快速射擊:

SELECT DISTINCT email FROM members m 
    JOIN members_kids k ON m.id = k.member_id 
    JOIN member_kids_activity_preferences p ON k.id = p.kid_id 
    WHERE p.activity_id IN (4,10,12,14) 
0
SELECT DISTINCT 
    m.email 
FROM 
    members AS m 
INNER JOIN 
    members_kids AS mk 
ON 
    m.id = mk.member_id 
INNER JOIN 
    member_kids_activity_preferences AS mkap 
ON 
    mk.id = mkap.kid_id 
WHERE 
    mkap.activity_id IN (4,10,12,14) 
2
SELECT m.name,m.email 
FROM members m 
    JOIN members_kids k 
     ON m.id = k.member_id 
    JOIN member_kids_activity_preferences ap 
     ON k.id = ap.kid_id 
WHERE ap.id IN (4, 10, 12, 14) 
GROUP BY m.name,m.email 
+0

我已經編輯我的答案使用GROUP BY DINSTINC的istead剛剛從MCHL提出了一些不同的glglgl因爲我們幾乎貼同時 – Dalen

+0

這裏是一個關於DISTINCT與GROUP BY有趣的問題:http://stackoverflow.com/questions/426723/sql-group-by-versus-distinct – Dalen