读书人

三(或多)表连接后 where 怎么只控制

发布时间: 2012-02-13 17:20:26 作者: rapoo

三(或多)表连接后 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

读书人网 >PB

热点推荐