2014-02-19 72 views
0

我有以下查詢,它給我的結果single marstat。查詢不適用於左連接?

SELECT 
    a_event . *, 
    members.* 
FROM a_event 
    INNER JOIN members 
    ON (members.mem_id = a_event.a_uid) 
    LEFT JOIN `profiles` 
    ON (profiles.mem_id = members.mem_id 
     AND profiles.marstat = 'Single') 
WHERE a_event.a_event_id = '5496' 
    AND members.gender = 'm' 
    AND a_event.a_fb_event_id = '0' 

但實際情況是,a_event成員必須與會員匹配表(INNER JOIN是強制性的),那麼這個結果將匹配其婚姻狀況爲單輪廓表的mem_id。但主要問題是配置表可能包含profiles.mem_id或沒有輸入,使用戶從a_event.mem_id如果不是在profiles.mem_id則該用戶也將被視爲single

請幫助 感謝

目前結果
+0

所以你希望結果能夠向每個人展示,即使他們沒有配置文件 - 如果他們不能自動被認爲是單一的? – wribit

+0

是的,如果用戶a_event.mem_id(其中條件)是單個或他/她的記錄不在配​​置文件中,那麼它必須被返回。但是這裏'Married' ppl也返回結果。 – John

回答

4

如果我明白你的問題合作rrectly要返回行時:

一)的用戶配置文件併爲單個 b)該用戶沒有個人資料

在這種情況下,查詢應該是:

SELECT 
    a_event . *, 
    members.* 
FROM a_event 
    INNER JOIN members 
    ON (members.mem_id = a_event.a_uid) 
    LEFT JOIN `profiles` 
    ON (profiles.mem_id = members.mem_id) 
WHERE a_event.a_event_id = '5496' 
    AND members.gender = 'm' 
    AND a_event.a_fb_event_id = '0' 
    AND (profiles.marstat = 'Single' OR profiles.marstat IS NULL) 
0

沒有小提琴很難考,但試試這個:更新答案與小提琴

SELECT 
     a_event . *, 
     members.* 
    FROM a_event 
     INNER JOIN members 
     ON (members.mem_id = a_event.a_uid) 
     LEFT JOIN `profiles` 
     ON (profiles.mem_id = members.mem_id) 
    WHERE a_event.a_event_id = '5496' 
     AND members.gender = 'm' 
     AND a_event.a_fb_event_id = '0' 
     AND (profiles.marstat = 'Single' or is null) 

http://sqlfiddle.com/#!2/99b774/3

+0

沒有這個查詢是沒有幫助的。讓我上傳到sqlfiddle – John

+0

嗨wribit我已經開發了sql模式http://sqlfiddle.com/#!2/c4c09/1。請檢查並讓我知道 – John

+0

請看這個小提琴 - 事件表中的a_id字段被設置爲不正確的成員ID。以及我改變了查詢來匹配我的 - 它似乎工作 - 只是意識到它應該返回一個空的配置文件以及...在它上面 – wribit