簡體   English   中英

左外連四桌

[英]LEFT OUTER JOIN with four table

這是表格結構

用戶表

Column  
fb_id   
email   
name    
fname   
lname   
gender  
fb_link 
created

推薦表

Column
id  
referred_by 
joinee  
created

當前實現的一種SQL是(示例1)

SELECT u.fb_id
    ,fb_link
    ,name
    ,r.referred_by
    ,u.created 
FROM users u 
LEFT OUTER JOIN referral r 
    ON u.fb_id=r.joinee

以上查詢結果

joinee              referer
10152250261037651   NULL
10152604594389921   NULL
10154430845000507   1518673071699780
....
....
....
....
547146735389782     NULL

這是sql(示例2)

SELECT u_joinee.fb_id joinee_fb_id
    ,u_referer.fb_id referer_fb_id
    ,u_joinee.NAME joinee_name
    ,u_referer.NAME referer_name
FROM users u_joinee
    ,users u_referer
    ,referral r_j
    ,referral r_r
WHERE u_referer.fb_id = r_r.referred_by
    AND u_joinee.fb_id = r_j.joinee

以上查詢結果

joinee_fb_id        referer_fb_id       joinee_name referer_name
10154430845000507   1518673071699780    Saselsdein  Bsdasd

我在找出來是我需要兩個名稱joinee_namereferer_name輸出。 但是我無法像我在例1中那樣在LEFT OUTER JOIN子句中使用四個表,我想同時獲取包括非引用和引用聯接的記錄,是否有任何方法可以期望所需的結果,如下所示

預期結果

joinee_fb_id        referer_fb_id       joinee_name referer_name
10154430845000507   1518673071699780    Saselsdein  Bsdasd
10154430845000347   Null                asd         NULL
10154430845000567   Null                asd asdm    NULL
10154230845000567   Null                Dsd asdm    NULL
10154330845000567   Null                sdm         NULL
101544553045000567  Null                Esd aedm    NULL

您可以通過為users表賦予不同的別名來兩次與users表聯接,就像對隱式內部聯接一樣。

我認為您不需要兩次加入referral referral表中的單行鏈接了一個推薦人和一個參與者。

SELECT u_joinee.fb_id joinee_fb_id ,u_referer.fb_id referer_fb_id, u_joinee.name joinee_name, u_referer.name referer_name
FROM users AS u_joinee
LEFT JOIN referral AS r ON r.joinee = u_joinee.fb_id
LEFT JOIN users AS u_referer ON r.referred_by = u_referer.fb_id

暫無
暫無

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

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