請問如果同一資料庫的A資料表內兩個欄位,同時對應到B資料表語法該如何寫?
例如:加工資料表內同時有出廠貨品編號及回廠貨品編號,對應到貨品資料表的貨品編號及貨品名稱
我只會一個欄位對應一個欄位語法如下:
.Source = "SELECT 工加工單編號, 出廠貨品編號,貨品資料表.貨品名稱 FROM 加工資料表 INNER JOIN 貨品資料表 ON 上班資料.出廠貨品編號 = 貨品資料表.貨品編號 WHERE " & 條件
請教各位大大,是否有語法可以使用
還是規劃有問題
WIN7 + ECXCEL 2007 VBA
ltc09提到:
加工資料表 的欄位是:
ltc09提到:
只為了每個月不到50筆資料,加工成本金額不到50K
albertachen提到:
企業百萬售價的東西為外本來就不會超過5%
請先把你的Table結構顯示出來吧,另外準備部份資料,這樣才好幫助你.
加工資料表.出廠貨品編號= <span style="color: green;">貨品資料表.貨品編號</span>
出廠貨品名稱=貨品資料表.貨品名稱
加工資料表.回廠貨品編號= <span style="color: green;">貨品資料表.貨品編號</span>
回廠貨品名稱=貨品資料表.貨品名稱
希望同時查詢輸出
加工資料表.出廠貨品編號,出廠貨品名稱,加工資料表.回廠貨品編號,回廠貨品名稱
不知我的表達是否正確
各位大大是否了解我的需求
無法超過1000字,我分開貼.
<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');
<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)
你的需求答案請確認一下.
hitomitanaka 大大您好
我是程式用 EXCEL 2007 VBA 寫的,資料庫用ACCESS,但語法可能大致相同
processgoods應該是對應到加工資料表
但為何會有a,b兩個,及兩個貨品資料c,d
謝謝
<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,別名. 方便使用
hitomitanaka 大大感謝您
已解決我的問題了
最後結論:
.Source = "SELECT 填單日期,加工單資料.廠商編號,廠商名稱,出廠貨品編號,貨品A.貨品名稱,回廠貨品編號,貨品B.貨品名稱 " & _
" FROM ((加工單資料 INNER JOIN 廠商資料 ON 加工單資料.廠商編號 = 廠商資料.廠商編號)" & _
"LEFT JOIN 貨品資料 貨品A ON 加工單資料.出廠貨品編號 = 貨品A.貨品編號)" & _
"LEFT JOIN 貨品資料 貨品B ON 加工單資料.回廠貨品編號 = 貨品B.貨品編號 " & _
"WHERE " & 條件