我有5个表,我正在运行一个SELECT语句,当所有表中都有数据时它一切正常,但如果只有一个表中有数据,我得到零结果?当不是所有表都填充数据时,如何使查询工作。现在正好刮我的头,请帮忙!
SELECT admins.username, round1.player, round1.round1_score,
round2.player, round2.round2_score,
round3.player, round3.round3_score,
round4.player, round4.round4_score,
round5.player, round5.round5_score
FROM `admins`, `round1`, `round2`, `round3`, `round4`, `round5`
WHERE admins.username <> 'admin'
AND admins.username = round1.player
AND admins.username = round2.player
AND admins.username = round3.player
AND admins.username = round4.player
AND admins.username = round5.player
GROUP BY admins.username
答案 0 :(得分:0)
我假设admins
表是主表?您需要使用outer joins
代替:
SELECT a.username, r1.player, r1.round1_score,
r2.player, r2.round2_score, r3.player, r3.round3_score,
r4.player, r4.round4_score, r5.player, r5.round5_score
FROM `admins` a
LEFT JOIN `round1` r1 ON a.username = r1.player
LEFT JOIN `round2` r2 ON a.username = r2.player
LEFT JOIN `round3` r3 ON a.username = r3.player
LEFT JOIN `round4` r4 ON a.username = r4.player
LEFT JOIN `round5` r5 ON a.username = r5.player,
WHERE a.username <> 'admin'
GROUP BY a.username
我不确定你真的需要group by
,一般情况下它用于聚合(有时用于获取distinct
个记录)。
答案 1 :(得分:0)
The way your query is, is like using inner join
so basically if one table has no data you get 0 results. You need to change your query using left
join.
答案 2 :(得分:0)
答案 3 :(得分:0)
您正在连接5个表
admins
,round1
,round2
,round3
,round4
,round5
这是一个内部联接,你只有共同数据
如果您想要数据,即使您右侧的表格为空,也可以使用LEFT JOIN
SELECT admins.username, round1.player, round1.round1_score,
round2.player, round2.round2_score,
round3.player, round3.round3_score,
round4.player, round4.round4_score,
round5.player, round5.round5_scoreFROM (((((`admins` left join `round1` on admins.username = round1.player)
left join `round2` on admins.username = round2.player)
left join `round3` on admins.username = round3.player)
left join `round4` on admins.username = round4.player)
left join `round5` on admins.username = round5.player)
WHERE admins.username <> 'admin'
GROUP BY admins.username