線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1513
推到 Plurk!
推到 Facebook!

要從兩個table取資料以建立一個query要如何下其sql?

答題得分者是:deity
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-03 15:22:59 IP:211.73.xxx.xxx 未訂閱
我有兩個table,一個是進貨明細表,一個是退貨表,其欄位名及資料如下 進貨明細表(進貨單號,項目序號是primary key) 進貨單號 項目序號 商品代號 進貨數量 進貨總額 1000 1 ddp 5 500 1000 2 wxy 6 300 1001 1 ddp 10 900 1001 2 wxy 3 150 退貨表(退貨時間是primary key,進貨單號是foreign key參考進貨明細表的進貨單號) 退貨時間 進貨單號 商品代號 退貨數量 退貨總額 2005/1/1 1001 ddp 2 180 2005/1/3 1001 ddp 3 270 如何下sql以建立一個query使其顯示如下的內容 ? 進貨單號 項目序號 商品代號 進貨數量 進貨總額 退貨數量 退貨總額 1000 1 ddp 5 500 0 0 1000 2 wxy 6 300 0 0 1001 1 ddp 10 900 5 450 1001 2 wxy 3 150 0 0 ps:工具是delphi 7 pro,用ado元件存取access的.mdb資料庫資料表
change.jian
版主


發表:29
回覆:620
積分:439
註冊:2003-06-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-03 16:05:03 IP:61.221.xxx.xxx 未訂閱
SELECT A.進貨單號,
       A.項目序號,
       A.商品代號,
       A.進貨數量,
       A.進貨總額,
       B.退貨數量,
       B.退貨總額
  FROM 進貨明細 A,
       退貨表 B
 WHERE A.進貨單號 *= B.進貨單號
   AND A.商品代號 *= B.商品代號
ps:如果同一張進貨單號會有兩個同樣的商品代號,那就有問題了,因為退貨表只記錄進貨單號及商品代號,但進貨明細裡卻是以進貨單號及項目序號為pk
spencerkuo
一般會員


發表:21
回覆:34
積分:11
註冊:2003-08-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-03 17:17:01 IP:221.169.xxx.xxx 未訂閱
引言: 我有兩個table,一個是進貨明細表,一個是退貨表,其欄位名及資料如下 進貨明細表(進貨單號,項目序號是primary key) 進貨單號 項目序號 商品代號 進貨數量 進貨總額 1000 1 ddp 5 500 1000 2 wxy 6 300 1001 1 ddp 10 900 1001 2 wxy 3 150 退貨表(退貨時間是primary key,進貨單號是foreign key參考進貨明細表的進貨單號) 退貨時間 進貨單號 商品代號 退貨數量 退貨總額 2005/1/1 1001 ddp 2 180 2005/1/3 1001 ddp 3 270 如何下sql以建立一個query使其顯示如下的內容 ? 進貨單號 項目序號 商品代號 進貨數量 進貨總額 退貨數量 退貨總額 1000 1 ddp 5 500 0 0 1000 2 wxy 6 300 0 0 1001 1 ddp 10 900 5 450 1001 2 wxy 3 150 0 0 ps:工具是delphi 7 pro,用ado元件存取access的.mdb資料庫資料表
SELECT A.進貨單號, A.項目序號, A.商品代號, A.進貨數量, A.進貨總額, B.退貨數量, B.退貨總額 FROM 進貨明細表 A LEFT OUTER JOIN 退貨表 B ON A.進貨單號 = B.進貨單號 AND A.商品代號 = B.商品代號 這樣寫也可以
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-06 14:49:32 IP:211.73.xxx.xxx 未訂閱
引言:
SELECT A.進貨單號,
       A.項目序號,
       A.商品代號,
       A.進貨數量,
       A.進貨總額,
       B.退貨數量,
       B.退貨總額
  FROM 進貨明細 A,
       退貨表 B
 WHERE A.進貨單號 *= B.進貨單號
   AND A.商品代號 *= B.商品代號
ps:如果同一張進貨單號會有兩個同樣的商品代號,那就有問題了,因為退貨表只記錄進貨單號及商品代號,但進貨明細裡卻是以進貨單號及項目序號為pk
在使用時似乎不支援*=
ry_lee
高階會員


發表:368
回覆:251
積分:123
註冊:2002-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-06 14:57:58 IP:211.73.xxx.xxx 未訂閱
引言:
引言: 我有兩個table,一個是進貨明細表,一個是退貨表,其欄位名及資料如下 進貨明細表(進貨單號,項目序號是primary key) 進貨單號 項目序號 商品代號 進貨數量 進貨總額 1000 1 ddp 5 500 1000 2 wxy 6 300 1001 1 ddp 10 900 1001 2 wxy 3 150 退貨表(退貨時間是primary key,進貨單號是foreign key參考進貨明細表的進貨單號) 退貨時間 進貨單號 商品代號 退貨數量 退貨總額 2005/1/1 1001 ddp 2 180 2005/1/3 1001 ddp 3 270 如何下sql以建立一個query使其顯示如下的內容 ? 進貨單號 項目序號 商品代號 進貨數量 進貨總額 退貨數量 退貨總額 1000 1 ddp 5 500 0 0 1000 2 wxy 6 300 0 0 1001 1 ddp 10 900 5 450 1001 2 wxy 3 150 0 0 ps:工具是delphi 7 pro,用ado元件存取access的.mdb資料庫資料表
SELECT A.進貨單號, A.項目序號, A.商品代號, A.進貨數量, A.進貨總額, B.退貨數量, B.退貨總額 FROM 進貨明細表 A LEFT OUTER JOIN 退貨表 B ON A.進貨單號 = B.進貨單號 AND A.商品代號 = B.商品代號 這樣寫也可以
執行結果是 進貨單號 項目序號 商品代號 進貨數量 進貨總額 退貨數量 退貨總額 1000 1 ddp 5 500 空白 空白 1000 2 wxy 6 300 空白 空白 1001 1 ddp 10 900 5 450 1001 2 wxy 3 150 空白 空白 而不是如下所示,請問如何讓那些空白設定成0 ? 進貨單號 項目序號 商品代號 進貨數量 進貨總額 退貨數量 退貨總額 1000 1 ddp 5 500 0 0 1000 2 wxy 6 300 0 0 1001 1 ddp 10 900 5 450 1001 2 wxy 3 150 0 0
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-10 08:48:01 IP:218.15.xxx.xxx 未訂閱
ry_lee您好: 试试如下:
 
SELECT 
A.進貨單號, 
A.項目序號, 
A.商品代號, 
A.進貨數量, 
A.進貨總額,  
(SELECT IIF(ISNULL(SUM(B.退貨數量)),0,SUM(B.退貨數量))  FROM 退貨表 AS B WHERE  (A.進貨單號=B.進貨單號) AND (A.商品代號=B.商品代號)) AS 退貨數量,
(SELECT IIF(ISNULL(SUM(B.退貨總額)),0,SUM(B.退貨總額))  FROM 退貨表 AS B WHERE  (A.進貨單號=B.進貨單號) AND (A.商品代號=B.商品代號)) AS 退貨總額
FROM 進貨明細表 AS A 
应该是您要的,试试看 <> ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
系統時間:2024-07-01 16:20:51
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!