三(或多)表连接后 where 如何只控制部分表的记录数据问题
在PB数据窗口中我用左连接连了三个表,我想通过where语句控制后面两个表的记录数据,怎么写where语句?
比如以下三表:
a表内容如下
客户id客户名
“001”公司A
“002”公司B
“003”公司C
“004”公司D
b表内容如下
客户id订货数量
“002”20
“004”60
c表的内容如下
客户id 发货数量
“002”20
我想做到的是数据窗口中三表连接后 以 客户id 客户名称 订货数量 发货数量 的格式显示, 如何能做到时
A表的记录数显示的基础上, 根据订货数据、发货数据等条件改变后面的记录数?
[解决办法]
我理解的就是这样的,不知道是不是你要的.
- SQL code
declare @TA TABLE (IDa varchar(5),cn VARCHAR(20))DECLARE @TB TABLE (IDa varchar(5),dh int)DECLARE @TC TABLE (IDa varchar(5),fh int)INSERT INTO @TA SELECT '001','公司A' UNION allSELECT '002','公司B' UNION allSELECT '003','公司C' UNION allSELECT '004','公司D' INSERT INTO @TB SELECT '002',20 UNION allSELECT '004',60INSERT INTO @TC SELECT '002',20 union allselect '003',10--select * from @ta--左外联接SELECT A.IDA as 客户ID,A.cn as 客户名称,isnull(B.dh,0) as 订货数量,isnull(c.fh,0) as 发货数量 FROM @TA A LEFT JOIN @TB B ON A.IDA=B.IDa LEFT join @TC C ON a.ida = c.ida/*(所影响的行数为 4 行)(所影响的行数为 2 行)(所影响的行数为 2 行)客户ID 客户名称 订货数量 发货数量 ----- -------------------- ----------- ----------- 001 公司A 0 0002 公司B 20 20003 公司C 0 10004 公司D 60 0(所影响的行数为 4 行)*/
[解决办法]
给你一个小李子 :
Select *
from A a left Join (select b.id ,c.name ,c.age from b ,c where b.id = c.id ) D
On a.id = D.Id