簡體   English   中英

查詢不能在左聯接上工作?

[英]Query not working on left join?

我有以下查詢,這給了我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是強制性的),然后此結果將與具有婚姻狀態為single的個人資料表的mem_id匹配。 但是主要問題是配置文件表可能包含帶有profiles.mem_id的結果或沒有條目,因此如果a_event.mem_id中的用戶不存在於profiles.mem_id中,那么該用戶也將被視為single

請幫忙謝謝

如果我正確理解了您的問題,則希望在以下情況下返回行:

a)用戶有個人資料並且是單身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)

沒有小提琴就很難測試,但是嘗試一下:用小提琴更新答案

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM