2014-06-20 74 views
1

我有以下select語句的MySQL選擇其中選擇可變

SELECT 
    a.firstname name, 
    m.date time 
FROM 
    account a 
    LEFT JOIN memberships m ON a.id = m.account_id 
WHERE 
    a.is_active = 1 

我試圖檢查,看看用戶是否有積極的成員(可能有不止一個,但一個是我所需要的作爲證明),如果這樣的話設置變量真或ID或什麼的,如果沒有那麼假的(或空或其他)

這裏是我迄今爲止

SELECT 
    a.firstname name, 
    p.date time 
    m.id active_membership 
FROM 
    account a 
    LEFT JOIN profile p ON a.id = p.account_id 
WHERE 
    a.id IN (SELECT DISTINCT account_id FROM memberships WHERE active = 1) 
AND 
    a.is_active = 1 

這樣的成績我很試圖得到我ULD是 名稱,時間,active_membership FOO,10:00,空 酒吧,14:00,223(ID或任何東西)

我得到的一切工作接受在部分地方...

+0

成員資格是否有多個列? – dcclassics

+0

看來你需要['EXISTS'](http://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html)這裏。 –

+0

亞會員有更多列 – seesoe

回答

2

你需要另一個LEFT JOIN

SELECT 
    a.firstname name, 
    p.date time, 
    IF(m.account_id IS NULL, "No", "Yes") active_membership 
FROM account a 
LEFT JOIN profile p ON a.id = p.account_id 
LEFT JOIN (SELECT DISTINCT account_id 
      FROM memberships 
      WHERE active = 1) m ON a.id = m.account_id 
WHERE a.is_active = 1 
+0

爲什麼你不能只在'a.id = m.account_id AND m.active = 1'上加上'LEFT JOIN成員資格'? – tadman

+2

因爲如果某人擁有多個成員資格,這將在結果中創建多行。 – Barmar

+0

你可以使用它,但是最後你需要添加'GROUP BY a.id'。 – Barmar