iT邦幫忙

0

同一資料庫的A資料表內兩個欄位,同時對應到B資料表語法該如何寫?

ltc09 2013-04-06 09:06:3412689 瀏覽

請問如果同一資料庫的A資料表內兩個欄位,同時對應到B資料表語法該如何寫?
例如:加工資料表內同時有出廠貨品編號及回廠貨品編號,對應到貨品資料表的貨品編號及貨品名稱

我只會一個欄位對應一個欄位語法如下:
.Source = "SELECT 工加工單編號, 出廠貨品編號,貨品資料表.貨品名稱 FROM 加工資料表 INNER JOIN 貨品資料表 ON 上班資料.出廠貨品編號 = 貨品資料表.貨品編號 WHERE " & 條件

請教各位大大,是否有語法可以使用
還是規劃有問題

WIN7 + ECXCEL 2007 VBA

看更多先前的討論...收起先前的討論...
你希望查詢得到什麼資料?

還有 加工資料表、貨品資料表 的關係,還有key值為何?
Albert iT邦高手 1 級 ‧ 2013-04-06 13:18:08 檢舉
這有專業設計服務
也有樣本可參考
一個一個零件來
很敬佩
也很感觸
難怪 22K 老闆 付得很冤
這是有專業服務的公司
22K 一周就解決
ltc09 iT邦新手 1 級 ‧ 2013-04-06 14:11:12 檢舉
加工資料表.出廠貨品編號= 貨品資料表.貨品編號
出廠貨品名稱=貨品資料表.貨品名稱

加工資料表.回廠貨品編號= 貨品資料表.貨品編號
回廠貨品名稱=貨品資料表.貨品名稱

希望同時查詢輸出
加工資料表.出廠貨品編號,出廠貨品名稱,加工資料表.回廠貨品編號,回廠貨品名稱

不知我的表達是否正確
各位大大是否了解我的需求
所以 table 加工資料表 的欄位是:
1. 出廠日期/回廠日期, 出廠貨品編號/回廠貨品編號
還是
2. 日期, 出廠貨品編號, 回廠貨品編號
?
ltc09 iT邦新手 1 級 ‧ 2013-04-06 16:35:32 檢舉
所以 table 加工資料表 的欄位是:
2. 日期, 出廠貨品編號, 回廠貨品編號....還有很多欄位(但不重要)
>>>重點是(出廠貨品編號),(回廠貨品編號)同時對應到(貨品編號),卻要同時輸出(出廠貨品名稱及回廠貨品名稱)

summertw iT邦好手 1 級 ‧ 2013-04-06 17:50:14 檢舉
樓主你的問題不在於程式如何寫,而在於貨品進出流程的定義沒有做..
流狀況一
(委外)加工貨品=>出廠(日期、(出)貨號)=>回廠(日期、(回)貨號)=>入庫
流狀況二
(委外)加工貨品=>出廠(日期、(出)貨號)=>尚未回廠
流狀況三
(委外)加工貨品=>尚未出廠
從以上三個流程來看,你的程式可分析成三種狀況..
狀況一,完整流程,程式可一氣呵成,不會有中斷
狀況二,已出廠,尚未回廠,流程執行中,因此勢必讀出資料會少一個欄位...
狀況三,未進入流程,資料讀出會缺兩欄位(以上)..
OK
狀況分析完成...
你可以動手去寫你要的程式了
Albert iT邦高手 1 級 ‧ 2013-04-06 18:03:28 檢舉
ltc09提到:
加工資料表 的欄位是:


委外加工品 成品回廠明細統
委外加工品 原料領用明細統
委外加工品 BOM表
委外加工品 用料結存表
ltc09 iT邦新手 1 級 ‧ 2013-04-06 18:47:01 檢舉
只為了每個月不到50筆資料,加工成本金額不到50K
有需要搞到4個以上的資料表嗎?(還要不含輸入畫面)

用一個資料表+一個輸入畫面解決
是否更節省(設計,維護,教育及輸入)的人力,也更符合成本效益
Albert iT邦高手 1 級 ‧ 2013-04-06 22:15:41 檢舉
ltc09提到:
只為了每個月不到50筆資料,加工成本金額不到50K


工程師就是工人
工人就是工人
企業百萬售價的東西為外本來就不會超過5%
工人就是工人
想的都是 [降低成本]
老闆要效率要可控管
工人要自我放大
要能表現...
Albert iT邦高手 1 級 ‧ 2013-04-06 22:16:36 檢舉
albertachen提到:
企業百萬售價的東西為外本來就不會超過5%

企業百萬售價的東西委外本來就不會超過5%
Albert iT邦高手 1 級 ‧ 2013-04-07 18:34:36 檢舉
你希望你敲的 老闆永遠不能自己查到 天天需要你

我們做很多系統
要求的是
將 excel 轉到 adempiere
任何地方
任何人
如有被授權的人
都可以查到
老闆不會受刁難
主管不會要你回來找資料
Albert iT邦高手 1 級 ‧ 2013-04-07 18:35:07 檢舉
albertachen提到:
你希望你敲的 老闆永遠不能自己查到 天天需要你

我們做很多系統
要求的是
將 excel 轉到 adempiere
任何地方
任何人
如有被授權的人
都可以查到
老闆不會受刁難
主管不會要你回來找資料
讚

1 個回答

6
一級屠豬士
iT邦高手 1 級 ‧ 2013-04-06 10:10:12
最佳解答

請先把你的Table結構顯示出來吧,另外準備部份資料,這樣才好幫助你.

看更多先前的回應...收起先前的回應...
ltc09 iT邦新手 1 級 ‧ 2013-04-06 14:14:12 檢舉

加工資料表.出廠貨品編號= <span style="color: green;">貨品資料表.貨品編號</span>
出廠貨品名稱=貨品資料表.貨品名稱

加工資料表.回廠貨品編號= <span style="color: green;">貨品資料表.貨品編號</span>
回廠貨品名稱=貨品資料表.貨品名稱

希望同時查詢輸出
加工資料表.出廠貨品編號,出廠貨品名稱,加工資料表.回廠貨品編號,回廠貨品名稱

不知我的表達是否正確
各位大大是否了解我的需求

ltc09 iT邦新手 1 級 ‧ 2013-04-06 16:33:37 檢舉
ltc09 iT邦新手 1 級 ‧ 2013-04-06 16:34:12 檢舉

無法超過1000字,我分開貼.

&lt;pre class="c" name="code">使用MySQL來操作
此為 貨品資料表
CREATE TABLE goodsdata(
id CHAR(1) NOT NULL PRIMARY KEY,
name CHAR(5) NOT NULL);

INSERT INTO goodsdata(id, name) VALUES
('A', '11111'), ('B', '22222'), ('X', '33333'), ('Z', '44444');

此為 加工資料表
CREATE TABLE processgoods(
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
pdate DATE NOT NULL,
outid CHAR(1) NOT NULL,
inid CHAR(1) NOT NULL);

INSERT INTO processgoods(pdate, outid, inid) VALUES
('2013-1-1', 'A', 'X'), ('2013-1-2', 'B', 'Z'), ('2013-1-5', 'A', 'X');
&lt;pre class="c" name="code">SELECT a.pdate AS '日期', a.outid AS '出廠貨品編號', c.name AS '出廠貨品名稱', b.inid AS '回廠貨品編號', d.name AS '回廠貨品名稱'
FROM processgoods a
JOIN processgoods b
ON a.id = b.id
LEFT JOIN goodsdata c
ON a.outid = c.id
LEFT JOIN goodsdata d
ON b.inid = d.id;
+------------+--------------------+--------------------+--------------------+--------------------+
| 日期       | 出廠貨品編號        | 出廠貨品名稱       | 回廠貨品編號        | 回廠貨品名稱       |
+------------+--------------------+--------------------+--------------------+--------------------+
| 2013-01-01 | A                  | 11111              | X                  | 33333              |
| 2013-01-02 | B                  | 22222              | Z                  | 44444              |
| 2013-01-05 | A                  | 11111              | X                  | 33333              |
+------------+--------------------+--------------------+--------------------+--------------------+
3 rows in set (0.00 sec)

你的需求答案請確認一下.
ltc09 iT邦新手 1 級 ‧ 2013-04-06 19:21:44 檢舉

hitomitanaka 大大您好
我是程式用 EXCEL 2007 VBA 寫的,資料庫用ACCESS,但語法可能大致相同
processgoods應該是對應到加工資料表
但為何會有a,b兩個,及兩個貨品資料c,d
謝謝

&lt;pre class="c" name="code">
改成這樣也可以
SELECT a.pdate AS '日期', a.outid AS '出廠貨品編號', c.name AS '出廠貨品名稱', a.inid AS '回廠貨品編號', d.name AS '回廠貨品名稱'
FROM processgoods a
LEFT JOIN goodsdata c
ON a.outid = c.id
LEFT JOIN goodsdata d
ON a.inid = d.id;
+------------+--------------------+--------------------+--------------------+--------------------+
| 日期       | 出廠貨品編號       | 出廠貨品名稱       | 回廠貨品編號       | 回廠貨品名稱       |
+------------+--------------------+--------------------+--------------------+--------------------+
| 2013-01-01 | A                  | 11111              | X                  | 33333              |
| 2013-01-02 | B                  | 22222              | Z                  | 44444              |
| 2013-01-05 | A                  | 11111              | X                  | 33333              |
+------------+--------------------+--------------------+--------------------+--------------------+

那是 alias,別名. 方便使用

ltc09 iT邦新手 1 級 ‧ 2013-04-06 21:31:19 檢舉

hitomitanaka 大大感謝您
已解決我的問題了
最後結論:
.Source = "SELECT 填單日期,加工單資料.廠商編號,廠商名稱,出廠貨品編號,貨品A.貨品名稱,回廠貨品編號,貨品B.貨品名稱 " & _
" FROM ((加工單資料 INNER JOIN 廠商資料 ON 加工單資料.廠商編號 = 廠商資料.廠商編號)" & _
"LEFT JOIN 貨品資料 貨品A ON 加工單資料.出廠貨品編號 = 貨品A.貨品編號)" & _
"LEFT JOIN 貨品資料 貨品B ON 加工單資料.回廠貨品編號 = 貨品B.貨品編號 " & _
"WHERE " & 條件

我要發表回答

立即登入回答