SQL里的交叉连接有什么实用的意义?谁能给我举个现实的例子要用到交叉连接查询的

我感觉能用交叉连接的用内连接就可以了。

第1个回答  2012-05-07
其实所有的查询都是源于cross join 来的,所以说他的意义太大了。本回答被提问者采纳
第2个回答  2012-05-09
个人理解:
A表:ID 动作 B表: ID 回复
1 我爱你 1 我不爱你
2 I LOVE YOU 2 me to
3 爱してる。 3 私もあなたを爱し
交叉查询 行数相乘…… 然后 每个动作都有可能的3种回复。
我也不知道对不对咯~ 欢迎各位专家指点。。
第3个回答  2012-05-07
SQL交叉表实例

很简单的一个东西,见网上好多朋友问“怎么实现交叉表?”,以下是我写的一个例子,数据库基于SQL SERVER 2000。

-- ======================================================

-- 交叉表实例

-- ======================================================

建 表:

在查询分析器里运行:

CREATE TABLE [Test] (

[id] [int] IDENTITY (1, 1) NOT NULL ,

[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,

[Source] [numeric](18, 0) NULL

) ON [PRIMARY]

GO

INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)

INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)

INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)

INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'数学',75)

INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'语文',57)

INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'语文',80)

INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'英语',100)

Go

450)this.width=450" o:title="sql2">

交叉表语句的实现:

--用于:交叉表的列数是确定的

select name,sum(case subject when '数学' then source else 0 end) as '数学',

sum(case subject when '英语' then source else 0 end) as '英语',

sum(case subject when '语文' then source else 0 end) as '语文'

from test

group by name

--用于:交叉表的列数是不确定的

declare @sql varchar(8000)

set @sql = 'select name,'

select @sql = @sql + 'sum(case subject when '''+subject+'''

then source else 0 end) as '''+subject+''','

from (select distinct subject from test) as a

select @sql = left(@sql,len(@sql)-1) + ' from test group by name'

exec(@sql)

go

参考资料:http://hi.baidu.com/myloveral/blog/item/47dd267a986b4fe12f73b3d5.html

SQL集合运算-②连结:交叉连结
交叉连结在数据库查询中的使用受到限制,主要基于两点原因:一是其结果往往缺乏实用价值,二是产生的行数过多,导致需要大量运算时间和高性能设备来支持。交叉连结,又称笛卡尔积,它在数据库中通过将两个集合中的每个元素与另一个集合中的每个元素组合,生成一个有序对。数据库中的并、交、差等操作在...

[SQL快速入门-38] SQL CROSS JOIN:交叉连接
SQL的CROSS JOIN,也称交叉连接或笛卡尔连接,其本质是将两个或更多表的所有行进行逐行匹配,形成结果集的每一个元素都是两个表中对应行的组合,即笛卡尔积。这种连接方式在没有指定连接条件或筛选的情况下,会生成所有可能的组合,无论是A表与B表的(A, B),还是B表与A表的(B, A)。举个例子,...

软件测试|深入理解SQL CROSS JOIN:交叉连接
在SQL查询中,CROSS JOIN是一种连接方式,用于获取两个或多个表中所有可能组合的行。无需关联条件,它返回两个表中的每行与另一表中的每行的所有组合。CROSS JOIN主要用于生成笛卡尔积,在某些情况下非常实用,但可能导致结果集过大。本文深入探讨了SQL中的CROSS JOIN,包括其语法、用途和使用注意事项。

[SQL快速入门-38] SQL CROSS JOIN:交叉连接
这种连接方式在SQL中产生的是两个表的每个记录的全方位组合,如同两块拼图的每个部分都有可能相遇,形成一个无*的配对结果。其语法形式多样,可以借助CROSS JOIN关键字,或者在SELECT语句中直接FROM子句中省略WHERE或ON条件。下面以实际案例来说明。比如,当你试图将CUSTOMERS表与ORDERS表进行连接,CROSS JOIN...

浅析Sql中内连接、外连接、全连接、交叉连接的区别
交叉连接:返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积 首先,先简单解释一下笛卡尔积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尓积(Cartesian product),又称直积,表示为X × Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个...

SQLSERVER:JOINs内连接、外连接、交叉连接
交叉连接 (CROSS JOIN)交叉连接返回第一个表中的每一行与第二个表中的每一行的笛卡尔积。这意味着如果第一个表有 M 行,第二个表有 N 行,那么结果集将有 M x N 行。SQL 查询结果 在这个例子中,交叉连接返回了员工和部门之间所有可能的组合。结论 JOINs 是 SQL 中的核心概念,它们使得从多个...

sql的交叉联接和完全连接有什么区别!举例子啊
CROSS JOIN : 没有任何条件, 完全是排列组合 SELECT student.SNO, student.SNAME, IC.ICNAME, IC.ICMoneyFROM student CROSS JOIN IC;+---+---+---+---+| SNO | SNAME | ICNAME | ICMoney |+---+---+---+---+| 1 | 张三 | 张三 | 500 || 2...

交叉表查询是为了解决什么问题 是为了解决一对多还是多对多呢
交叉表查询,得到的数据就是笛卡尔集合 两表数据的乘积,就是多对多

SQL中的内连接外连接和交叉连接是什么意思?
交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。无论哪种连接...

SQL-Server学习笔记05-T-SQL查询之连接查询
借助多个表之间的关系,实现多表查询,主要分为内连接、外连接、全连接、交叉连接。示例表:学生表、教师表、课程表、成绩表 一、内连接查询 使用 inner join 关键字连接表,并通过 on 关键字指定关联条件。示例:查询学生ID、学生ID别名(可省略或写作'学生ID'=s.s_id),实现内连接。拓展:筛选...

相似回答