不知道你要的是不是这种意思 select a.* ,b.* from a,b where a.col = b.col
7楼正是需要出的结果, 只是如果a,b如果是查询,用一个sql语句应该怎么写? 比如a是select * from table1 b是select * from table2
--> liangCK小梁 于2008-10-31 --> 生成测试数据: @T1 DECLARE @T1 TABLE (BH VARCHAR(2),TNAME VARCHAR(4),SEX VARCHAR(2)) INSERT INTO @T1 SELECT '01','张三','男' UNION ALL SELECT '02','李四','男' UNION ALL SELECT '03','王五','女' --> 生成测试数据: @T2 DECLARE @T2 TABLE (DZ VARCHAR(6),ZW VARCHAR(6)) INSERT INTO @T2 SELECT '西环路','学生' UNION ALL SELECT '东环路','工程师' UNION ALL SELECT '南环路','总经理'--SQL查询如下:SELECT ID=IDENTITY(INT,1,1),* INTO #T1 FROM @T1;SELECT ID=IDENTITY(INT,1,1),* INTO #T2 FROM @T2;SELECT A.BH,A.TNAME,A.SEX,B.DZ,B.ZW FROM #T1 AS A LEFT JOIN #T2 AS B ON A.ID=B.ID/* BH TNAME SEX DZ ZW ---- ----- ---- ------ ------ 01 张三 男 西环路 学生 02 李四 男 东环路 工程师 03 王五 女 南环路 总经理(3 行受影响) */
查询出来的结果必须得是符合数据库的定义的如果LZ只是需要把两个结果左右合并成一张放在一起的表那么个人认为分两种情况: 1.A表和B表中都有楼主说的一样的字段col,而col的值是a表和b表都不相同,也就是说a表中和b表中的某一col值无法和另外一表中任何的值对应,那么这种情况建议楼主干脆把两表的结果复制粘贴到excel,然后再导入到数据库里。麻烦一点,就是每个表专门建一个ID自增字段,使得全部都一一对应,然后你使用inner join 就可以了。 2.如果两表中的col的值在各自表中都是唯一且在另外一长表都有且仅有一个值与之对应,那么楼主也直接使用inner join 就可以了 也就是使用: select a.* ,b.* from a,b where a.col = b.col
上面的几个方法对于a,b是表有效, 只是如果a,b是两个查询,用一个sql语句应该怎么写? 比如a是select * from table1 b是select * from table2
没有重复 sql1 union sql2 有重复 sql1 union all sql2
这个是纵向 横向估计是这样 select * from (sql1) a left join (s1l2) b on....
... from 表1 a ,表2 b where a.字段=b.字段
楼主可使用如下的语句: SELECT A.*,B.* FROM ( select * from table1 ) A JOIN ( select * from table2 ) B ON A.COL=B.COL
18楼的方法好用,谢谢了。 不知如何将这种方法推广至3个以上的查询? 假设第三个查询是select * from tb3
一样的啊,后面接着连接子查询就可以了:SELECT A.*,B.*,C.* FROM ( select * from table1 ) A JOIN ( select * from table2 ) B ON A.COL=B.COL JOIN ( select * from tb3 ) C ON B.COL=C.COL不过仍然有点想知道楼主是碰到了什么要的实际情况,需要横向合并。
21楼, 我用的是access, 18楼的语句需要将join改为inner join才有效, 使用21楼的语句将join改为inner join后出现了语法错误(操作符丢失)在查询表达式 “A.COL=B.COL JOIN ( select * from tb3 ) C ON B.COL=C.COL ”中, 请问在access中该功能如何实现?
是不是access不允许两张以上的表关联啊? PS,换个大型关系数据库耍耍得了。
如果access中无法实现多表关联, 那么有没有其他方法解决上面提出的问题呢? 问题: 现有几个表共用一个分类表, 想将这几个表的分类汇总结果放在一个页面(同一个表格)中输出, 有什么更好的解决办法吗? 问题好象主要出在where子句上, 如果仅是一个表tb2使用一个分类表tb1,可以用 select sum(tb2.col3) from tb1,tb2 where tb1.col=tb2.col group by tb1.col 的形式,如果是两个表tb2,tb3使用一个分类表tb1,却无法使用 select sum(tb2.col3),sum(tb3.col5) from tb1,tb2,tb3 where tb1.col=tb2.col and tb1.col=tb3.col group by tb1.col 的形式,该语句运行后的数据明显错误, 不知是什么原因? 如何解决?
楼主虽然已结贴,但是,其实除了困扰楼主的表和表的链接问题 还有一个access数据库关联问题 access在关联2张表以上的话,使用的语句必须得用括号括起来 一层一层 JOIN 下去。例如: Select * FROM (aa LEFT JOIN bb ON aa.a = bb.a ) LEFT JOIN cc ON cc.a = bb.a;其实对于这个access多表关联,这个我也是baidu出来的 http://www.cnode.cn/article.asp?id=145
a inner join b on a.col=b.col
select a.* ,b.* from a,b
where a.col = b.col
只是如果a,b如果是查询,用一个sql语句应该怎么写?
比如a是select * from table1
b是select * from table2
--> 生成测试数据: @T1
DECLARE @T1 TABLE (BH VARCHAR(2),TNAME VARCHAR(4),SEX VARCHAR(2))
INSERT INTO @T1
SELECT '01','张三','男' UNION ALL
SELECT '02','李四','男' UNION ALL
SELECT '03','王五','女'
--> 生成测试数据: @T2
DECLARE @T2 TABLE (DZ VARCHAR(6),ZW VARCHAR(6))
INSERT INTO @T2
SELECT '西环路','学生' UNION ALL
SELECT '东环路','工程师' UNION ALL
SELECT '南环路','总经理'--SQL查询如下:SELECT ID=IDENTITY(INT,1,1),* INTO #T1 FROM @T1;SELECT ID=IDENTITY(INT,1,1),* INTO #T2 FROM @T2;SELECT A.BH,A.TNAME,A.SEX,B.DZ,B.ZW
FROM #T1 AS A
LEFT JOIN #T2 AS B
ON A.ID=B.ID/*
BH TNAME SEX DZ ZW
---- ----- ---- ------ ------
01 张三 男 西环路 学生
02 李四 男 东环路 工程师
03 王五 女 南环路 总经理(3 行受影响)
*/
1.A表和B表中都有楼主说的一样的字段col,而col的值是a表和b表都不相同,也就是说a表中和b表中的某一col值无法和另外一表中任何的值对应,那么这种情况建议楼主干脆把两表的结果复制粘贴到excel,然后再导入到数据库里。麻烦一点,就是每个表专门建一个ID自增字段,使得全部都一一对应,然后你使用inner join 就可以了。
2.如果两表中的col的值在各自表中都是唯一且在另外一长表都有且仅有一个值与之对应,那么楼主也直接使用inner join 就可以了
也就是使用:
select a.* ,b.* from a,b
where a.col = b.col
只是如果a,b是两个查询,用一个sql语句应该怎么写?
比如a是select * from table1
b是select * from table2
sql1
union
sql2
有重复
sql1
union all
sql2
select * from (sql1) a left join (s1l2) b on....
...
from 表1 a ,表2 b where a.字段=b.字段
楼主可使用如下的语句:
SELECT A.*,B.* FROM
(
select * from table1
) A
JOIN
(
select * from table2
) B
ON A.COL=B.COL
不知如何将这种方法推广至3个以上的查询?
假设第三个查询是select * from tb3
(
select * from table1
) A
JOIN
(
select * from table2
) B
ON A.COL=B.COL
JOIN
(
select * from tb3
) C
ON B.COL=C.COL不过仍然有点想知道楼主是碰到了什么要的实际情况,需要横向合并。
我用的是access,
18楼的语句需要将join改为inner join才有效,
使用21楼的语句将join改为inner join后出现了语法错误(操作符丢失)在查询表达式
“A.COL=B.COL
JOIN
(
select * from tb3
) C
ON B.COL=C.COL
”中,
请问在access中该功能如何实现?
PS,换个大型关系数据库耍耍得了。
那么有没有其他方法解决上面提出的问题呢?
问题:
现有几个表共用一个分类表,
想将这几个表的分类汇总结果放在一个页面(同一个表格)中输出,
有什么更好的解决办法吗?
问题好象主要出在where子句上,
如果仅是一个表tb2使用一个分类表tb1,可以用
select sum(tb2.col3) from tb1,tb2 where tb1.col=tb2.col group by
tb1.col
的形式,如果是两个表tb2,tb3使用一个分类表tb1,却无法使用
select sum(tb2.col3),sum(tb3.col5) from tb1,tb2,tb3 where
tb1.col=tb2.col and tb1.col=tb3.col group by tb1.col
的形式,该语句运行后的数据明显错误,
不知是什么原因?
如何解决?
还有一个access数据库关联问题
access在关联2张表以上的话,使用的语句必须得用括号括起来
一层一层 JOIN 下去。例如:
Select *
FROM (aa LEFT JOIN bb ON aa.a = bb.a ) LEFT JOIN cc ON cc.a = bb.a;其实对于这个access多表关联,这个我也是baidu出来的
http://www.cnode.cn/article.asp?id=145