有公共列也出現笛卡爾集﹐奇怪﹖
大家請看﹕
select count(*) from SYUKKA_FL 得到430
select count(*) from PRINT_FL 得到625
select count(*) from SYUKKA_FL SY,
PRINT_FL PR
where SY.KANRI_BASYO_CD = PR.KANRI_BASYO_CD
得到267072
SELECT count(*)
FROM SYUKKA_FL INNER JOIN PRINT_FL
ON SYUKKA_FL.KANRI_BASYO_CD = PRINT_FL.KANRI_BASYO_CD
得到267072
小弟這裡明白了﹐請大家指點。
另﹕任務是要求從A表中某字段得到B表中的某字段﹐最後輸出這個字段和A所有字段的記錄。
问题点数:0、回复次数:11Top
1 楼AbsurdLife(荒谬人生)回复于 2004-09-02 21:21:43 得分 0
抱歉。更正一下。
小弟這裡不明白了﹐請大家指點。
Top
2 楼pbsql(风云)回复于 2004-09-02 21:34:15 得分 0
两种写法都没错,总的结果应该是0到430*625之间,没什么奇怪的Top
3 楼hdhai9451(☆新人类☆)回复于 2004-09-02 21:40:53 得分 0
這樣寫當然有問題啦
SELECT count(*)
FROM SYUKKA_FL INNER JOIN PRINT_FL
ON SYUKKA_FL.KANRI_BASYO_CD = PRINT_FL.KANRI_BASYO_CD
count(*)這個*兩個表記錄的乘積,就是表1第一條記錄和表2的所有記錄連接得到的記錄集,加上表1的第二條記錄也和表2的所有記錄連接得到的記錄集,以此類推。。。。
===================
兩個表相連,你要得到哪一個字段,必須要列出具體的表名,字段名
SELECT a.col1,a.col2,b.col3,b.col4....
FROM SYUKKA_FL a INNER JOIN PRINT_FL b
ON a.KANRI_BASYO_CD = b.KANRI_BASYO_CD
Top
4 楼AbsurdLife(荒谬人生)回复于 2004-09-02 21:41:07 得分 0
謝謝pbsql(风云)
請問下面業務的SQL如何寫﹕
表A
有1﹐2﹐3﹐4四個字段
表B
有x,y,z三個字段。
表A的4 和 表B的z 類型相同。
現在要求輸出x,2,3,4 ,其中x是用A中的1去找B中的x得出來的。
Top
5 楼AbsurdLife(荒谬人生)回复于 2004-09-02 21:43:04 得分 0
我的問題就是從上面的業務產生出來的。Top
6 楼pbsql(风云)回复于 2004-09-02 21:46:28 得分 0
select a2,a3,a4,(select top 1 x from b where a.a4=b.z) x
from aTop
7 楼AbsurdLife(荒谬人生)回复于 2004-09-02 21:50:03 得分 0
to pbsql(风云):
請恕我愚笨﹐可以解釋一下嗎。
Top
8 楼AbsurdLife(荒谬人生)回复于 2004-09-02 22:02:48 得分 0
我在ORACLE中做的﹐top 1 好像不支持。Top
9 楼rouqu(石林#黄果树)回复于 2004-09-02 22:56:43 得分 0
表A的4 和 表B的z 類型相同 ? 还是说要匹配?Top
10 楼AbsurdLife(荒谬人生)回复于 2004-09-03 08:28:25 得分 0
to rouqu(石林#黄果树) :
匹配Top
11 楼pbsql(风云)回复于 2004-09-03 08:39:53 得分 0
select a.a2,a.a3,a.a4,b.x from a,b where a.a4=b.zTop




