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