假設 我有 三個資料表 分別為 表一 表二 表三
如下: 表一
單號
單況
編號
生產數量
C1
0
BBA
100
C2
1
BBD
100
C3
0
BBF
100
C4
0
BBB
100
C5
0
BBB
100
表二
單號
產品編號
應領數量
C1
A001
100
C1
A002
50
C1
A003
200
C2
A001
100
C2
A002
100
C3
A004
500
C3
A005
200
C3
A006
100
C4
A002
300
C4
A003
100
C4
A004
500
C5
A002
100
C5
A003
100
表三
旗標
單號
產品編號
已領數量
200
C1
A001
50
200
C1
A002
50
200
C1
A003
200
200
C2
A001
100
200
C2
A002
100
200
C3
A004
500
200
C4
A002
300
200
C4
A003
100
200
C4
A004
500
500
AC1
B001
20
500
AC2
B002
30
200
C5
A002
100
200
C5
A003
100
規則
1.要 挑出 在表一中 單況=0 的
2. 表一的單號 跟表二的單號 要關聯
3. 要從表三中 找出旗標為200的,且 應領數量 跟 已領數量 完全相同的,也就是說應領有三筆的 已領也要有同樣的三筆資料 且 要完全領料
所以應該 會得到 C4 跟 C5 才是完全符合條件的,C1 則因領料不完全 所以不符合條件
問題一
請教SQL 寫法 得到 下表,也就是 從上面三表中 判斷出 C4 C5 符合 然後再把 表一的C4 C5 的編號相同的數量相加
編號
數量
BBB
200
問題二
請教SQL 寫法 得到 下表,也就是 從上面三表中 判斷出 C4 C5 符合 然後再把 表二的C4 C5 的產品編號相同的應領數量相加
產品編號
應領數量
A002
400
A003
200
A004
500
2006-12-25 10:01:28 · 5 個解答 · 發問者 kevin 5 in 電腦與網際網路 ➔ 程式設計
感謝兩位的幫忙,請教一件事情
1.第一位朋友 ,請問你的寫法是SQL 可以接受的程式寫法嗎
還是 是其他語言 搭配SQL 的寫法
2. 第二位朋友,請教SQL 本身的語言可以像ACCESS一樣存成一個查詢的名稱嗎 ,還是不行,麻煩告訴我
2006-12-27 16:55:51 · update #1
MS-SQL 2000
我遇到的麻煩是 假設我想分成兩個句子 查詢
第一個句子 我可以查詢到我要的總表
但是 我不知道如何把我要的總表 像ACCESS 一樣存成一個查詢
然後我可以利用那個查詢 在去做查詢的動作
可以麻煩交我 一下怎麼在MS-SQL 2000 把第一個查詢 儲存成我要的名子,然後我可以再寫個查詢的句子 去查詢第一個查詢的結果
2006-12-28 08:24:14 · update #2
終於研究出第一個解答,提供大家當做參考
SELECT 編號, SUM(生產數量) FROM 表一 WHERE 單號 IN (SELECT 表一.單號 FROM 表一 left join (表二 left join 表三 ON 表三.產品編號 = 表二.產品編號 and 表三.單號 = 表二.單號 and 表三.旗標=200) ON 表二.單號 = 表一.單號
WHERE 表一.單況=0 GROUP BY 表一.單號 HAVING SUM(表二.應領數量)= SUM(表三.已領數量)) GROUP BY 編號
感謝 狼鷹 的解答 我多學會了一些,你的方法我會試看看的
2006-12-29 16:40:50 · update #3
另外我可以請教你一件事情嗎 麻煩妳
我們公司的ERP 是用正航的系統,採用SQL資料庫,本身正航已經有寫程式利用SQL資料庫本身的備份功能,定期做備份,不過他是備份所有的資料庫
我想請教的是,我要怎麼利用SQL本身的資料庫排程功能,針對某個資料庫做備份,我有試過,但是好像每個資料庫都只能有一組定期備份的功能,我的已經受到正航系統的管理, 我能不能利用其他方法,可以多做一組的備份排程呢
2006-12-29 16:41:06 · update #4
不好意思 我在請教一下狼鷹
這個問題回答的,第一位朋友 寫法是SQL 可以接受的程式寫法嗎
還是 是其他語言 搭配SQL 的寫法
2006-12-29 16:43:14 · update #5
換個思考方向
先找出表三旗標為200 的資料
Select * From 表三 where 旗標 = 200
旗標
單號
產品編號
已領數量
200
C1
A001
50
200
C1
A002
50
200
C1
A003
200
200
C2
A001
100
200
C2
A002
100
200
C3
A004
500
200
C4
A002
300
200
C4
A003
100
200
C4
A004
500
200
C5
A002
100
200
C5
A003
100
再由上表找出跟 表二 應領數不同的單號
SELECT Distinct 表二.單號 FROM 表二 LEFT JOIN
(SELECT * FROM 表三 WHERE 旗標 = 200) 表三 ON 表二.單號 =
表三.單號 AND 表二.產品編號 = 表三.產品編號 WHERE
(表二.應領數量 <> 表三.已領數量 OR 表三.已領數量 IS NULL)
單號
C1
C3
再從表一中找除不上在上述單號內的且單況為0的單號
Select 單號 From 表一 Where 單號 not in
(SELECT Distinct 表二.單號 FROM 表二 LEFT JOIN
(SELECT * FROM 表三 WHERE 旗標 = 200) 表三 ON 表二.單號 =
表三.單號 AND 表二.產品編號 = 表三.產品編號 WHERE
(表二.應領數量 <> 表三.已領數量 OR 表三.已領數量 IS NULL))
And 單號 in (Select Distinct 表二.單號 From 表二) And 單況 = 0
單號
C4
C5
可先將 上述語法 另存成 MS-SQL的 檢視表 或MS Access的查詢
假設上述語法產生的檢視表(查詢)名稱為V_Rule
問題一的解答
Select 編號 , Sum (生產數量) as 數量 From 表一 Join V_Rule On 表一.單號= V_Rule.單號 Group By 編號
問題二的解答
Select 表二.產品編號, SUM(表二.應領數量) AS 應領數量 From 表二 Join V_Rule On 表二.單號= V_Rule.單號 Group By 產品編號
2006-12-28 01:23:05 補充:
如果你是問MS-SQL的話
MS-SQL的檢視表(View)就是了
如果你是要問SQL Command本身
這我就不確定了...各家資料庫的SQL語法不一
對了在MS Access中Inner Join 印像中不能像MS-SQL簡化成 Join
還有你們是用哪套DBMS呢?(MS-SQL, Access, Oracle, .... ???)
2006-12-29 09:01:30 補充:
方法1:
開啟Enterprise Manager
找到你的DB並展開他
在左邊的樹狀結構中
在資料表的下面有一個叫檢視表的東西
對他按右鍵 選新增檢視表
這時候你會看到 視窗中 有幾個區塊
其中一個區塊會寫
Select
From
把你的SQL Command覆蓋那兩行
然後存檔 就像上面的例子 我把他存成V_Rule
之後你就可以把它當成Table來使用
2006-12-29 09:09:00 補充:
方法2:
開啟Query Analyzer
連線到SQL Server
在查詢視窗中
輸入以下的語法
Use DBName -- 資料庫的名稱
Create ViewName -- 檢視表的名稱 以上例而言為 V_Rule
As
--以下為你的SQL Command
--以上為你的SQL Command
然後執行查詢就可以了
另外不管是方法一或方法二
你使用的連線帳號
都必須要有Create View及Select相關Table的權限
2007-01-02 10:58:17 補充:
(1)
開啟Enterprise Manager
找到你的DB
對它按右鍵 選 所有工作 再選 備份資料庫
接著選取備份型態
選新增 然後輸入你要產生的備份檔的檔案名稱
勾選排程 並設定排程時間後 按下確定即可
(2)
JJ大的答案需配合 Visual Basic 6開發工具
2006-12-27 06:01:46 · answer #1 · answered by ALEXLEE 5 · 0⤊ 0⤋
這有類似的
▶▶http://qoozoo1400703.pixnet.net/blog
2014-09-13 08:32:31 · answer #2 · answered by Anonymous · 0⤊ 0⤋
參考下面的網址看看
http://phi008780430.pixnet.net/blog
2014-05-03 14:45:43 · answer #3 · answered by Anonymous · 0⤊ 0⤋
還是要去 http://aaashops。com 品質不錯,老婆很喜歡。
向唳做傪哢叁呠
2013-10-04 04:05:02 · answer #4 · answered by Anonymous · 0⤊ 0⤋
你的需求情況好像很複雜
自己沒經歷那樣的條件
所以底下僅供參考
增加一個暫存表格 "表0", 欄位如下 (以 單號 來排序)
單號 編號 生產數量 產品編號 應領數量
set dyn1 = db.openrecordset("select * from 表一 where 單況 = 0")
while not dyn1.eof
set dyn2 = db.openrecordset("select * from 表二 where 單號 = '" & dyn1("單號") & "'")
i = 0
while not dyn2.eof
i = i+1
if (i=1) then
寫入 表0
else
寫入 表0 (但是 生產數量 填 0)
endif
dyn2.movenext
wend
dyn1.movenext
wend
dyn1.close
dyn2.close
set dyn1 = db.openrecordset("select * from 表0")
while not dyn1.eof
set dyn2 = db.openrecordset("select * from 表三 where 旗標 = 200 and 單號 = '" & dyn1("單號") & "' and 產品編號 = " & dyn1("產品編號") & "' and 已領數量 = " & dyn1("已領數量") )
if (dyn2.recordset = 0) then ' 把不合的單號全刪除
tmpstr = dyn1("單號")
do ' 刪除往後部分
dyn1.delete
dyn1.movenext
while (dyn1("單號") = tmpstr)
dyn1.moveprevious
while (dyn1("單號") = tmpstr) ' 刪除往前部分
dyn1.delete
dyn1.moveprevious
wend
endif
dyn1.movenext
wend
如此 剩下的就是
C4 BBB 100 A002 300
C4 BBB __0 A003 100
C4 BBB __0 A004 500
C5 BBB 100 A002 100
C5 BBB __0 A003 100
2006-12-26 10:48:41 · answer #5 · answered by JJ 7 · 0⤊ 0⤋