【发布时间】:2014-10-23 10:11:21
【问题描述】:
这是表结构
用户表
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_name 和referer_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
【问题讨论】:
-
LEFT OUTER JOIN为什么不能用四张表? -
FROM users u_joinee, users u_referer, referral r_j, referral r_r等价于FROM users u_joinee CROSS JOIN users u_referer CROSS JOIN referral r_j CROSS JOIN referral r_r。您需要将每个,运算符替换为INNER或OUTER加入。 -
@Barmar 因为我使用同一张表两次
users u_joinee, users u_referer, referral r_j, referral r_r检查用户表
标签: mysql sql tsql join left-join