SQL中三表之间的数据比较,高分求助............................................
有三个表如下:
A表
id name
1 aaa
2 bbb
3 ccc
B表
id A_ID Port Phone
1 1 00-01 123
2 1 00-02 456
3 1 00-03
4 1 00-04 157
5 2 00-01 1454
6 2 00-02
C表
ID Name_Port Phone address
1 aaa-00-01 123 asdf
2 aaa-00-02 ererer
3 aaa-00-03 1212145454 asdfasdf
4 bbb-00-01 789 sadfasdfasdf
如何查询得出B表中PORT相同但Phone不同的结果集,并显示出A.Name+B.Port、 B.Phone 、C.Phone、C.address
结果即:
DK B.Phone C.Phone C.address
aaa-00-02 456 ererer
aaa-00-03 1212145454 asdfasdf
aaa-00-04 157
bbb-00-01 1454 789 sadfasdfasdf
(其中aaa-00-01是Phone记录相等,bbb-00-02是C表中没有记录,而B表中Phone记录为空,所以只有这两个是相等的记录。)
高分求助.................
------解决方案----------------------A表和B表相连接的结果如下:
DECLARE @A表 TABLE(ID INT ,NAME VARCHAR(10))
INSERT INTO @A表
SELECT 1, 'aaa '
UNION ALL
SELECT 2, 'bbb '
UNION ALL
SELECT 3, 'ccc '
DECLARE @B表 TABLE(id INT, A_ID INT, Port VARCHAR(10), Phone VARCHAR(10))
INSERT INTO @B表
SELECT 1,1, '00-01 ',123
UNION ALL
SELECT 2,1, '00-02 ',456
UNION ALL
SELECT 3,1, '00-03 ',NULL
UNION ALL
SELECT 4,1, '00-04 ',157
UNION ALL
SELECT 5,2, '00-01 ',1454
UNION ALL
SELECT 6,2, '00-02 ',NULL
SELECT DK=TA.Name+ '- '++TB.Port ,
TB.Phone
FROM @A表 TA