台灣最大程式設計社群網站
線上人數
1102
 
會員總數:246739
討論主題:190152
歡迎您免費加入會員
討論區列表 >> ACCESS >> 從多個資料表查詢符合特定條件的值
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
從多個資料表查詢符合特定條件的值
價值 : 50 QP  點閱數:573 回應數:9
樓主

chykie
門外漢
0 5
101 12
發送站內信

資料表1,有索引欄、欄1、欄2跟欄3,例如:
欄1 欄2 欄3
11 22 1
11 22 2
11 22 3
22 33 1
.....

資料表2,有索引欄與欄4,例如
欄4
1
2
3
4
.....

請問要如何以(欄1+欄2)相同的為一組,對各組進行查詢欄4的最小值(日期),然後輸出對應該最小值的索引值






搜尋相關Tags的文章: [ 查詢 ] , [ Group by ] ,
本篇文章發表於2021-11-01 13:42
1樓
回應

P陳
檢舉此回應
類似以下寫法:
SELECT 資料表1.Field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值
FROM 資料表2 INNER JOIN 資料表1 ON 資料表2.Field4 = 資料表1.field3
GROUP BY 資料表1.Field1, 資料表1.field2;
本篇文章回覆於2021-11-03 11:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

chykie
檢舉此回應
謝謝您的回覆,可能是我資料給得不完整

資料表1應當是
索引欄 欄1 欄2 欄3

資料表2則為
索引欄 欄4

兩個資料表間是透過索引欄聯結的,基本上資料表1中的欄3在這個問題中是沒有作用
所以依您的說明,是否應當改為如下呢?

SELECT 資料表2.索引欄, Min(資料表2.Field4) AS Field4之最小值
FROM 資料表2 INNER JOIN 資料表1 ON 資料表2.索引欄 = 資料表1.索引欄
GROUP BY 資料表1.Field1, 資料表1.field2;
本篇文章回覆於2021-11-04 19:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

P陳
檢舉此回應
那現在的訊息是什麼呢?
本篇文章回覆於2021-11-08 18:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
依您的資料

SELECT 資料表1.field1, 資料表1.field2, Min(資料表1.field3) AS field3之最小值
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.field3 = 資料表2.Field4
GROUP BY 資料表1.field1, 資料表1.field2;

出來的 答案是 共二筆
11 22 1
22 33 1
本篇文章回覆於2021-11-08 18:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

chykie
檢舉此回應
P大您新給的SQL中,似乎有點出入的樣子,

因為要判斷最小值的對象是欄4,不是欄3
然後想獲得的值是索引欄的值

後來我採用了另一個方式,
先用一個查詢獲得 每一個群組的最小欄4值
因為每一個群組會對應到多筆資料,所以會有多筆索引欄的值,無法在第一個查詢中直接取得所要的索引欄的值
所以再用另一個查詢 將第一個查詢的結果,進一步過濾出每一個最小欄4值所對應的索引欄的值
這樣雖然可以獲得預想得到的值,但也會有多出來的(因為最小欄4值會有重覆的)


本篇文章回覆於2021-11-10 17:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

P陳
檢舉此回應
您最初給的資料中沒有放索引欄的值 我當然就跳過去了
您將索引欄的資料也放上來,我們再來對看看
本篇文章回覆於2021-11-18 17:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

P陳
檢舉此回應
然後你要的是 資料表1的索引欄 還是要資料表2的索引欄

再將以你的資料作出來的 結果會是什麼也請提示一下
本篇文章回覆於2021-11-18 17:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

chykie
檢舉此回應
目前採用的方式如下

資料表1
索引欄 欄1 欄2 欄3 ….
1 A BB 100
2 A BB 101
3 C BB 101
4 C BB 100
5 C BB 103


資料表2
索引欄 欄4
1 2020/01/01
2 2020/01/03
3 2020/05/01
4 2020/05/03
5 2020/05/09


兩個資料表的索引欄已建立關聯

建立查詢1,結合資料表1+資料表2
以欄1+欄2為組,查詢欄4的最小值,並輸出欄1、欄2與欄4的值
結果為
欄1 欄2 欄3
A BB 2020/01/01
C BB 2020/05/01

建立查詢2,結合查詢1+資料表1+資料表2

查詢1欄1=資料表1欄1 +
查詢1欄2=資料表1欄2 +
查詢1欄3=資料表2欄4
的連結條件,

輸出資料表1中對應的索引欄值
(就算是輸出資料表2的索引欄值,理論上應該也是一樣的值)
結果為
1
3
本篇文章回覆於2021-11-19 15:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

P陳
檢舉此回應
識別碼就是你的索引欄
有三種答案 出來的答案跟您的提示的一樣

SELECT 資料表1.field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼
GROUP BY 資料表1.field1, 資料表1.field2;

SELECT 資料表1.field1, 資料表1.field2, Min(資料表2.Field4) AS Field4之最小值, Min(資料表1.識別碼) AS 識別碼之最小值
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼
GROUP BY 資料表1.field1, 資料表1.field2;

SELECT Min(資料表1.識別碼) AS 識別碼之最小值
FROM 資料表1 INNER JOIN 資料表2 ON 資料表1.識別碼 = 資料表2.識別碼
GROUP BY 資料表1.field1, 資料表1.field2;
本篇文章回覆於2021-11-20 08:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.