Sql server 多个表上的多个联接
我有三张桌子:Sql server 多个表上的多个联接,sql-server,sql-server-2008-r2,Sql Server,Sql Server 2008 R2,我有三张桌子: Cars ----------------- CarBrand | Amount Honda | 0 Mitsu | 5 Ford | 7 CarParts -------------------- CarPartID | CarBrand 001 | Honda 002 | Mitsu 003 | Ford 004 | Ford 005 | Ford Drivers ------
Cars
-----------------
CarBrand | Amount
Honda | 0
Mitsu | 5
Ford | 7
CarParts
--------------------
CarPartID | CarBrand
001 | Honda
002 | Mitsu
003 | Ford
004 | Ford
005 | Ford
Drivers
-----------------------
DriverName | CarBrand
Tom | Ford
John | Mitsu
Mark | Mitsu
我需要以下数据作为结果:
卡伯兰|零件安装|驱动器安装
可能吗?完全连接后计数在那里不起作用…这里有几种方法可以满足您的需要: 或
这对你合适吗?看起来像是你的作业,请在我们给你答案之前发布你的努力。选择DEVICE2M1.LOGICAL\u NAME,Subscribpm1.STATUS作为subscribe,Subscribpm1.SUBSCRIBERTYPE作为usersubscribe,INCIDENTSM1.Infected\u ITEM作为call,INCIDENTSM1.OPEN\u TIME作为call\u date,PROBSUMMARYM2.Infected\u ITEM作为incident,CM3RM2.infected_ITEM as change from DEVICE2M1 DEVICE2M1.LOGICAL_NAME=subscribpm1.SERVICENAME full join incidents1 on DEVICE2M1.LOGICAL_NAME=incidents1.infected_ITEM full join probsumarym2 on DEVICE2M1.LOGICAL_NAME=probsumarym2.infected_ITEM DEVICE2M1.LOGICAL_NAME=CM3RM2.infected_ITEM其中DEVICE2M1.SUBTYPE='Service'看不到此选择与您的问题之间的任何关系,在所有这些连接之后,您甚至没有查询问题中描述的表。我尝试使用COUNT,但这毫无意义…@Anton-有一个编辑链接可以让您更新您的问题。当你修改你的问题时,你可以使用诸如
{}
code按钮这样的工具,它可以让你展示代码片段并打开语法高亮显示——这是你在评论中无法做到的。哇!它起作用了!很抱歉反应太晚,我正在用真实的数据尝试你的方法,非常感谢!
select c.CarBrand, j.parts, k.drivers
from
Cars c
cross apply
(
select count(*)
from CarParts cp
where cp.CarBrand = c.CarBrand
) j (parts)
cross apply
(
select count(*)
from Drivers d
where d.CarBrand = c.CarBrand
) k (drivers);
select
c.CarBrand,
(select count(*) from CarParts cp where cp.CarBrand = c.CarBrand) as Parts,
(select count(*) from Drivers d where d.CarBrand = c.CarBrand) as Drivers
from
Cars C