我有一个表评级,书签,签到,食物表中的食物有一个独特的密钥sno和这个sno密钥用于其余三个表。
食物表 sno name totalrating totalcheckin
1 nitesh 52 45
2 abhishek 4 9
3 divye 42 30
评级表
sno datakey rated name
1 3 3.0 divye
1 6 4.0 shashank
书签表
sno datakey name
1 3 divye
1 6 shashank
签到表
sno datakey name
1 2 abhishek
1 6 shashank
我需要数据,其中datakey为3,如果不存在则显示空值,数据键列不重复
像
0 1 2 3 4 5 6 7 8 9 10
sno name totalrating totalcheckin sno rated name sno name sno name
3 divye 42 30 1 3.0 divye 1 divye null null
答案 0 :(得分:0)
您的查询应如下所示:
SELECT f.sno, f.name, f.totalrating, f.totalcheckin,
r.sno, r.rated, r.name,
b.sno, b.name,
c.sno, c.name
FROM food AS f
LEFT JOIN ratings AS r
ON f.sno = r.datakey
LEFT JOIN bookmark AS b
ON f.sno = b.datakey
LEFT JOIN checkin AS c
ON f.sno = c.datakey
WHERE f.sno = 3
以下是SQL Fiddle,了解它是如何运作的。
此外,我同意评论中的人员,他们会告诉您阅读有关JOIN语法的内容。它很漂亮,您可以here开始,或者更具体地针对您的问题LEFT JOIN,这是开始和良好的开始。另外,您可以看到我在查询中使用别名来读取here。
GL!
P.S。 (编辑)如果你有任何问题可以随意提出......我还注意到你在每张桌子上都有名字栏,如果我理解你的桌子之间的关系,那就没有必要了。您应该只在第一个表(食物)中存储名称,并且只需从中获取简单的JOIN,您就可以随时提取数据!