合併表格查詢後,列出所有資料,包含Null值 |
尚未結案
|
tahoo
一般會員 發表:22 回覆:19 積分:8 註冊:2003-05-13 發送簡訊給我 |
我的問題有點複雜,但想破頭都想不出來,只好上來問各位前輩了,謝謝啦!!
我想要將三個資料表用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 發送簡訊給我 |
|
tahoo
一般會員 發表:22 回覆:19 積分:8 註冊:2003-05-13 發送簡訊給我 |
引言: Hi, 請問資料庫是不是 access? 另外因為使用了 isnull 及指定月份 (使用了 or), 當然滿足的條件的資料會都秀出啊, 並非月份條件失效, 而是範圍變大了. 而且怎麼會有 null 日期的入庫, 領料日期呢? 這樣也是很怪不是嗎?謝謝您的回應,資料庫我是用Access,如我所問的問題,和使用之方法2,如果我沒有將Null值也列出來的話,程式不會將所有庫存清單都列出來,只會顯示有進料或領料的資料而已? 突然想學Delphi的新手 發表人 - tahoo 於 2005/05/01 10:29:11 |
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
tahoo
一般會員 發表:22 回覆:19 積分:8 註冊:2003-05-13 發送簡訊給我 |
引言: 可以將你的 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 發送簡訊給我 |
試試 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 發送簡訊給我 |
引言: 試試 subquery 會方便一些, 如timhuang兄: 您真的花了不少時間再幫我處理這個問題, 真是太感謝您了,我和您相同年紀,但我是問問題的,您是回答問題的,我應該要多加用心一點了,應該以您為學習的目標,再次謝謝您囉!! 突然想學Delphi的新手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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |