描述:
外连接查询
在数据库表(Cadrt)中,有如下记录:
CadrTime Da
2004-4-10 10:09:04 1001.28
2004-4-10 10:09:06 1002.32
2004-4-10 10:09:08 1003.46
2004-4-10 10:09:10 1004.56
2004-4-10 10:09:13 1005.21
2004-4-10 10:09:16 1006.38
2004-4-10 10:10:28 1007.54
......
在数据库表(LogInf)中,有如下记录
LogTime ReMark
2004-4-01 09:10:35 单根计数信息...
2004-4-10 10:09:10 交接人:张山
2004-4-10 10:10:25 单根计数信息...
......
两表连接查询,期望产生结果按时间递增如下所示:
CadrTime Da ReMark
2004-4-01 09:10:35 NULL 单根计数信息...
2004-4-10 10:09:04 1001.28 NULL
2004-4-10 10:09:06 1002.32 NULL
2004-4-10 10:09:08 1003.46 NULL
2004-4-10 10:09:10 1004.56 交接人:张山
2004-4-10 10:09:13 1005.21 NULL
2004-4-10 10:09:16 1006.38 NULL
2004-4-10 10:10:25 NULL 单根计数信息...
2004-4-10 10:10:28 1007.54 NULL
......
我的查询语句是这样写的:(在没有加字段Da的情况下)
SELECT d.CadrTime, l.remark
FROM Cadrt d FULL OUTER JOIN
(SELECT remark
FROM LogInf
WHERE flagid = 8) l ON l.InfoTime = d.CadrTime
查询结果如下:
CadrTime ReMark
2004-4-01 09:10:35 单根计数信息...
2004-4-10 10:09:04 NULL
2004-4-10 10:09:06 NULL
2004-4-10 10:09:08 NULL
2004-4-10 10:09:10 交接人:张山
2004-4-10 10:09:13 NULL
2004-4-10 10:09:16 NULL
2004-4-10 10:10:25 单根计数信息...
2004-4-10 10:10:28
......
产生结果的顺序是对的,可并不是期望的结果.一加上Da字段,整个查询顺序就乱了,不知道问题出在那里,希望高手给一指点(在线等待中。。。).
解决方案1:
我觉得你想要的强果应该是迪卡尔乘积,是吗?
就是两个表的数据都要,并按 CadrTime排序。
我觉得直接用select t1.xx,t1.yy,t2.xxx from t1 full outer join t2
order by t1.yy
就可以啊。
以上是我用SQL Server的pubs数据库加联机帮助得到,关键就是用
A FULL OUTER JOIN B
ON ... //这里是连接的条件
USING(C) //这里说明属性B只保留一个,不重复
Good Luck!
使用完整外部联接
若要通过在联接结果中包括不匹配的行保留不匹配信息,请使用完整外部联接。Microsoft® SQL Server™ 2000 提供完整外部联接运算符 FULL OUTER JOIN,不管另一个表是否有匹配的值,此运算符都包括两个表中的所有行。
假设在 city 列上联接 authors 表和 publishers 表。结果只显示在出版商所在城市居住的作者(本例中为 Abraham Bennet 和 Cheryl Carson)。SQL-92 FULL OUTER JOIN 运算符指明:不管表中是否有匹配的数据,结果将包括两个表中的所有行。
若要在结果中包括所有作者和出版商,而不管城市中是否有出版商或者出版商是否住在同一个城市,请使用完整外部联接。下面是 Transact-SQL 完整外部联接的查询和结果:
USE pubs
SELECT a.au_fname, a.au_lname, p.pub_name
FROM authors a FULL OUTER JOIN publishers p
ON a.city = p.city
ORDER BY p.pub_name ASC, a.au_lname ASC, a.au_fname ASC
下面是结果集:
au_fname au_lname pub_name
-------------------- ---------------------------- --------------------
Reginald Blotchet-Halls NULL
Michel DeFrance NULL
Innes del Castillo NULL
Ann Dull NULL
Marjorie Green NULL
Morningstar Greene &n