您的位置:程序门 -> ms-sql server -> 疑难问题



一个交叉查询问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


一个交叉查询问题[已结贴,结贴人:xiangquriben]
发表于:2007-10-11 18:03:10 楼主
==table   a============
id
---------------
1
2
3
====================
==table   b===========
id
------------------
a
b
c
====================

想得到的结果
=============
1,a
1,b
1,c
2,a
2,b
2,c
3,a
3,b
3,c
=========================
有什么好办法没有?
发表于:2007-10-11 20:33:451楼 得分:2
select  
a.id,
b.id
from   a,b
order   by   a.id   asc,b.id   asc

select  
a.id,
b.id
from   a   cross   join   b
order   by   a.id   asc,b.id   asc
发表于:2007-10-11 21:32:462楼 得分:2
select   a.id,   b.id
from   a,   b
order   by   a.id,   b.id
发表于:2007-10-11 21:39:593楼 得分:2
同意楼上观点,用不加条件的连接再加上order排序输出即可
发表于:2007-10-11 22:51:424楼 得分:2
sql code
create table a(id varchar10)) insert into a values'1') insert into a values'2') insert into a values'3') create table b(id varchar10)) insert into b values'a') insert into b values'b') insert into b values'c') go select a.id + ',' + b.id 'col' from a cross join b order by col drop table a,b /* col --------------------- 1,a 1,b 1,c 2,a 2,b 2,c 3,a 3,b 3,c (所影响的行数为 9 行) */
发表于:2007-10-11 22:52:455楼 得分:2
sql code
--如果a的id为int型,转化一下. create table a(id int) insert into a values1) insert into a values2) insert into a values3) create table b(id varchar10)) insert into b values'a') insert into b values'b') insert into b values'c') go select cast(a.id as varchar) + ',' + b.id 'col' from a cross join b order by col drop table a,b /* col --------------------- 1,a 1,b 1,c 2,a 2,b 2,c 3,a 3,b 3,c (所影响的行数为 9 行) */
发表于:2007-10-11 23:52:166楼 得分:6
cross   join  
没错   同意
发表于:2007-10-12 00:12:197楼 得分:2
想得到的结果是:
tablea   “乘以”   tableb
即笛卡积,是codd对于关系数据库给出的8个关系操作之一。

sql实现:cross   join

sql code
select * from tablea cross join tableb


t-sql可以:

sql code
select * from tablea,tableb


如果得到具体形式的结果,楼上已有具体代码。
发表于:2007-10-12 11:35:498楼 得分:2
select   a.id,b.id   from   table   a   full   join   tableb   b   on   1=1


快速检索

最新资讯
热门点击