SQL 关系运算问题, 在线等。。。。

Crazy_hand 2010-12-09 04:46:05
我用的 sql server 2008
--------------------------------------------
表的结构 (属性, 类型)
WAREHOUSE
WH_ID NCHAR, LOCATION NCHAR, NO_OF_BINS INT, PHONE NCHAR
ITEMS
WH_ID NCHAR, ITEM_NO INT, QTY INT

我想做两个表的 连接

SELECT CHAPTER4_WAREHOUSE.WH_ID,
CHAPTER4_WAREHOUSE.LOCATION,
CHAPTER4_WAREHOUSE.NO_OF_BINS,
CHAPTER4_WAREHOUSE.PHONE,
CHAPTER4_ITEMS.ITEM_NO,
CHAPTER4_ITEMS.QTY

from CHAPTER4_ITEMS, CHAPTER4_WAREHOUSE

但我这样写的时候,出来的结果是 笛卡尔积

然后,我看了下书, 发现 连接操作,外连接操作,笛卡尔积 的语法 几乎完全一样。
然后,我朋友在他那用 sql2000,一样的语法 却没问题。。。。。
求解?????
...全文
106 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
billpu 2010-12-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 crazy_hand 的回复:]

我刚开始学数据库。不知道为什么。
我看的是一本讲语法的书。
上面写的 连接操作 用SQL可以表达为

SELECT 属性数据
from 外表(关系)名,内表(关系)名

而且 外连接操作,笛卡尔积, 全是一样的。
[/Quote]
语法是差不多 就是连接条件不一样
原理其实也差不多 笛卡尔积减去不需要的部分也就是某种连接了
chengexia 2010-12-09
  • 打赏
  • 举报
回复
书上应该有连接条件的,你是不是看漏了。再仔细看下啊。按照你写的查询语句,结果肯定是笛卡尔积
Crazy_hand 2010-12-09
  • 打赏
  • 举报
回复
我刚开始学数据库。不知道为什么。
我看的是一本讲语法的书。
上面写的 连接操作 用SQL可以表达为

SELECT 属性数据
from 外表(关系)名,内表(关系)名

而且 外连接操作,笛卡尔积, 全是一样的。

billpu 2010-12-09
  • 打赏
  • 举报
回复
--2000也一样,都是笛卡尔连接,你朋友的机器是不是有问题?

CREATE TABLE t1 (id INT)
CREATE TABLE t2 (id INT)
INSERT t1 SELECT 1 UNION ALL
SELECT 2
GO
INSERT t2 SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5

SELECT * FROM t1,t2

/*
id id
----------- -----------
1 3
2 3
1 4
2 4
1 5
2 5

(6 row(s) affected)
*/
chuifengde 2010-12-09
  • 打赏
  • 举报
回复
怎么会一样呢?
上面的就是笛卡尔积(还可以cross join),外连接是left join ,right join ,full join
内联接是inner join
天-笑 2010-12-09
  • 打赏
  • 举报
回复
你这语句 等于是:
SELECT CHAPTER4_WAREHOUSE.WH_ID,
CHAPTER4_WAREHOUSE.LOCATION,
CHAPTER4_WAREHOUSE.NO_OF_BINS,
CHAPTER4_WAREHOUSE.PHONE,
CHAPTER4_ITEMS.ITEM_NO,
CHAPTER4_ITEMS.QTY

from CHAPTER4_ITEMS inner join CHAPTER4_WAREHOUSE on 1 = 1

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧