全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:927
推到 Plurk!
推到 Facebook!

MASTER_DETAIL 的 SQL

答題得分者是:Fishman
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-25 13:40:31 IP:211.21.xxx.xxx 未訂閱
臨時測不出來, 看哪位熟SQL 的長官提供一下..    資料內容如下  
TABLE1    TABLE2    ID1       ID1  MONEY
===       === ======
  1         1     10 
  2         1     30
  3         1     50
  4         1     70
  5         1     90
  6         2     20
  7         2     40
  8         2     60
  9         2     80
  0         3      0
            4      0
            5      0
            
希望 QUERY 出的結果是    ID1        MONEY
===        ======
  1           250
  2           200
  3             0
  4             0
  5             0
  6             0
  7             0
  8             0
  9             0
  0             0
 
也就是統計每個 ID1 的 MONEY 總和 但在 TABLE2 中 , ID1 沒有 5,6,7,8,9,0 的 ID 發表人 - bruce0211 於 2004/02/25 13:43:42
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-25 13:57:51 IP:210.65.xxx.xxx 未訂閱
Hi:    
SELECT  T.ID1,
        SUM(T.MONEY) AS MONEY
FROM   (SELECT  T1.ID1,
                SUM(T2.MONEY) AS MONEY
        FROM    TABLE1 T1,
                TABLE2 T2
        WHERE   T1.ID1 = T2.ID1
        GROUP BY
                T1.ID1
        UNION ALL
        SELECT  T1.ID1,
                0 AS MONEY
        FROM    TABLE1 T1) T
GROUP BY
        T.ID1
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-25 13:59:28 IP:210.65.xxx.xxx 未訂閱
Hi:    outter join
SELECT  T1.ID1,
        NVL(SUM(T2.MONEY),0) AS MONEY
FROM    TABLE1 T1,
        TABLE2 T2
WHERE   T1.ID1 = T2.ID1( )
GROUP BY
        T1.ID1
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- 發表人 -
------
Fishman
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-25 14:06:21 IP:211.21.xxx.xxx 未訂閱
我在 INTERBASE 上測的    SELECT  T.ID1,         SUM(T.MONEY) AS MONEY FROM   (SELECT  T1.ID1,                 SUM(T2.MONEY) AS MONEY         FROM    TABLE1 T1,                 TABLE2 T2         WHERE   T1.ID1 = T2.ID1         GROUP BY                 T1.ID1         UNION ALL         SELECT  T1.ID1,                 0 AS MONEY         FROM    TABLE1 T1) T GROUP BY         T.ID1    在第三行出現錯誤 不知跟執行 SQL 的平台有無關係 .... 至於 OUTER JOIN , 在 INTERBASE 上好像沒有 OUTER JOIN 語法 ...    上面測試環境的假資料建立如下
create table table1 (id1 INTEGER)
insert into table1 values(1)
insert into table1 values(2)
insert into table1 values(3)
insert into table1 values(4)
insert into table1 values(5)
insert into table1 values(6)
insert into table1 values(7)
insert into table1 values(8)
insert into table1 values(9)
insert into table1 values(0)    create table table2 (id1 INTEGER, money INTEGER) //ORACLE 用 NUMBER 代替 INTEGER 型態
insert into table2 values(1,10)
insert into table2 values(1,30)
insert into table2 values(1,50)
insert into table2 values(1,70)
insert into table2 values(1,90)
insert into table2 values(2,20)
insert into table2 values(2,40)
insert into table2 values(2,60)
insert into table2 values(2,80)
insert into table2 values(3,0)
insert into table2 values(4,0)
insert into table2 values(5,0)
 
發表人 - bruce0211 於 2004/02/25 14:09:47
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-25 14:19:42 IP:211.21.xxx.xxx 未訂閱
SORRY , 上面長官所提供的兩個語法 我在 ORACLE 上測試都通過 並得到我要的結果 INTERBASE 的語法我在想辦法 非常感謝
系統時間:2024-05-20 18:01:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!