正确加入或加入哪种类型?

时间:2018-02-05 19:05:36

标签: sql join

我有4张桌子。

1只有网站名称。

3个表,其中包含网站名称以及针对不同用户类型的点击数量。

我需要针对每种用户类型对这些网站点击次数进行报告

网站Userype1hits Userype2hits Userype3hits

所以在选择部分我需要用一个名为noanswer的表进行交叉检查

喜欢

select *
from table
where site in (select site from noanswer)

所以根据我的理解,我需要使用join,在这种情况下正确加入?

如何加入此查询?

2 个答案:

答案 0 :(得分:3)

您可以使用left join

select sn.*, t1.cnt, t2.cnt, t3.cnt
from sitenames sn left join
     table1 t1
     on t1.name = sn.name left join
     table2 t2
     on t2.name = sn.name left join
     table3 t3
     on t3.name = sn.name;

你的问题在字段名称上含糊不清。

left join保留第一个表中的所有行,并匹配后续表中的行。它比right join更常用,可能是因为它更容易阅读逻辑思维“我将保留所有这些行”。一系列right join实际上将所有行保留在最后一个表中,因此您必须等待查看哪些行保留。

答案 1 :(得分:0)

我确实喜欢这个,用Google搜索了一些内容,因为即使我在这里得到答案,我还没有得到它的工作,加入对我来说是全新的。内部用户,外部用户等只是假的发布我在这里做的事情,因为我不能使用真实姓名。

select s.Site,s2.Total_hits as 'Internalusers',s3.Total_Hits as 'ExternalUsers', 
s4.Total_hits as 'Comapany2users'  from Database.Table as S
left outer join HITAnalyze.dbo.Internal as s2 on s2.site = s.Site
left outer join HITAnalyze.dbo.External1 as s3 on s3.site = s.Site
left outer join HITAnalyze.dbo.Company2 as s4 on s4.site = s.Site