我在sql中有4个表,我想要数据或所有表,其中一个唯一键在其中四个匹配

时间:2015-06-06 06:50:17

标签: sql-server sql-server-2008

我有一个表评级,书签,签到,食物表中的食物有一个独特的密钥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

1 个答案:

答案 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,您就可以随时提取数据!