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

合併表格查詢後,列出所有資料,包含Null值

尚未結案
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-30 23:32:52 IP:220.141.xxx.xxx 未訂閱
我的問題有點複雜,但想破頭都想不出來,只好上來問各位前輩了,謝謝啦!! 我想要將三個資料表用left outer join 合併起來,但又要加月份的資料過濾,我想要取得單月份的庫存資料,包含當月入庫數量,當月領料數量,但我使終得到的值不是我想要的語法如下: 試過許多方法 方法1:如果我將 isnull(入庫明細.日期)和isnull(領料明細.領料日期)拿掉的話,只會單獨列出有入庫或有領料的資料,可能只有幾筆,並不是所有產品資料,只有顯示有入庫或有領料的,我想要的是我有50種產品,都要列出來 方法2:加入isnull(入庫明細.日期)和isnull(領料明細.領料日期),50筆資料全都會顯示,但是我的月份條件就失效了,就是說不管月份條件為幾月,所得到的值都是相同的 gsSQL :=       'SELECT 庫存資料.庫存編號, 庫存資料.庫存名稱, 庫存資料.安全量, ([庫存資料].[庫存量]-[庫存資料].[安全量]) AS 不足量,' +       'Sum(入庫明細.入庫量) AS 入庫數量, Sum(領料明細.領料數量) AS 領料數量, 庫存資料.庫存量, 庫存資料.單位 ' +       'FROM (庫存資料 Left  JOIN 入庫明細 ON 庫存資料.庫存編號 = 入庫明細.庫存編號) Left   JOIN 領料明細 ON 庫存資料.庫存編號 = 領料明細.庫存編號 ' +       'where Format(入庫明細.日期,''yyyymm'')=:sSelectYear or isnull(入庫明細.日期) or Format(領料明細.領料日期)=:sSelectYear1 or isnull(領料明細.領料日期) ' +       'GROUP BY 庫存資料.庫存編號, 庫存資料.庫存名稱, 庫存資料.安全量, 庫存資料.庫存量, 庫存資料.單位';     突然想學Delphi的新手
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-05-01 00:21:31 IP:220.132.xxx.xxx 未訂閱
Hi, 請問資料庫是不是 access? 另外因為使用了 isnull 及指定月份 (使用了 or), 當然滿足的條件的資料會都秀出啊, 並非月份條件失效, 而是範圍變大了. 而且怎麼會有 null 日期的入庫, 領料日期呢? 這樣也是很怪不是嗎?
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-05-01 10:23:18 IP:218.163.xxx.xxx 未訂閱
引言: Hi, 請問資料庫是不是 access? 另外因為使用了 isnull 及指定月份 (使用了 or), 當然滿足的條件的資料會都秀出啊, 並非月份條件失效, 而是範圍變大了. 而且怎麼會有 null 日期的入庫, 領料日期呢? 這樣也是很怪不是嗎?
謝謝您的回應,資料庫我是用Access,如我所問的問題,和使用之方法2,如果我沒有將Null值也列出來的話,程式不會將所有庫存清單都列出來,只會顯示有進料或領料的資料而已? 突然想學Delphi的新手 發表人 - tahoo 於 2005/05/01 10:29:11
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-05-01 10:41:32 IP:220.132.xxx.xxx 未訂閱
可以將你的 schema 及部分資料列出來, 方便大家協助你解決問題嗎? 目前看起來似乎資訊不足以提供任何進一步的協助.
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-05-01 14:02:41 IP:218.163.xxx.xxx 未訂閱
引言: 可以將你的 schema 及部分資料列出來, 方便大家協助你解決問題嗎? 目前看起來似乎資訊不足以提供任何進一步的協助.
再這先謝謝timhuang兄不遺餘力回答我的問題,我現在縮小了我的問題了,依圖片上來看,我實際上<<紙尿褲L>>只入庫了一包,但領料了二包,但sum之後的結果會出現<<紙尿褲L>>入庫二包(錯),領料二包(沒問題),真的很難理解,只要有相同的庫存編號,它會把領料的數量,加到入庫的數量去,不管入庫或領料都是如此,不能領相同的東西,其結果就會變的相同了?? 結果如下圖 關聯的資料架構如下圖 邏輯架構為,依庫存編號做主鍵,找出入庫.庫存編號相同的數量做加總及領料.庫存編號相同的做加總,包含沒入庫,沒領料的資料也要顯示出來 突然想學Delphi的新手 發表人 - tahoo 於 2005/05/01 14:21:44
 
 
■■■■ 發表人 - tahoo 於 2005/05/01 14:33:39
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-05-01 22:59:17 IP:220.132.xxx.xxx 未訂閱
試試 subquery 會方便一些, 如    
select a.庫存編號, a.庫存名稱, a.安全量, (a.庫存量-a.安全量) as 不足量, 
       (select iif(isnull(sum(入庫量)), 0, sum(入庫量)) from 入庫明細 where 庫存編號 = a.庫存編號) as 入庫數量,
           (select iif(isnull(sum(領料數量)), 0, sum(領料數量)) from 領料明細 where 庫存編號 = a.庫存編號) as 領料數量,
           a.庫存量, a.單位
from 庫存資料 a
若要加上日期的判斷, 則修改為,
select a.庫存編號, a.庫存名稱, a.安全量, (a.庫存量-a.安全量) as 不足量, 
       (select iif(isnull(sum(入庫量)), 0, sum(入庫量)) from 入庫明細 where 庫存編號 = a.庫存編號 and Format(入庫日期, "yyyymm")="200504") as 入庫數量,
           (select iif(isnull(sum(領料數量)), 0, sum(領料數量)) from 領料明細 where 庫存編號 = a.庫存編號 and Format(領料日期, "yyyymm")="200504") as 領料數量,
           a.庫存量, a.單位
from 庫存資料 a
tahoo
一般會員


發表:22
回覆:19
積分:8
註冊:2003-05-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-05-02 09:04:31 IP:218.163.xxx.xxx 未訂閱
引言: 試試 subquery 會方便一些, 如
select a.庫存編號, a.庫存名稱, a.安全量, (a.庫存量-a.安全量) as 不足量, 
       (select iif(isnull(sum(入庫量)), 0, sum(入庫量)) from 入庫明細 where 庫存編號 = a.庫存編號) as 入庫數量,
           (select iif(isnull(sum(領料數量)), 0, sum(領料數量)) from 領料明細 where 庫存編號 = a.庫存編號) as 領料數量,
           a.庫存量, a.單位
from 庫存資料 a
若要加上日期的判斷, 則修改為,
select a.庫存編號, a.庫存名稱, a.安全量, (a.庫存量-a.安全量) as 不足量, 
       (select iif(isnull(sum(入庫量)), 0, sum(入庫量)) from 入庫明細 where 庫存編號 = a.庫存編號 and Format(入庫日期, "yyyymm")="200504") as 入庫數量,
           (select iif(isnull(sum(領料數量)), 0, sum(領料數量)) from 領料明細 where 庫存編號 = a.庫存編號 and Format(領料日期, "yyyymm")="200504") as 領料數量,
           a.庫存量, a.單位
from 庫存資料 a
timhuang兄: 您真的花了不少時間再幫我處理這個問題, 真是太感謝您了,我和您相同年紀,但我是問問題的,您是回答問題的,我應該要多加用心一點了,應該以您為學習的目標,再次謝謝您囉!! 突然想學Delphi的新手
系統時間:2024-06-26 15:33:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!