[英]One to Many relationship / for each in SQL query
我有兩個表Table 1和Table 2,它們之間的關系是:一個--->很多。
表1-> CaseNumber是PK | 創建日期| 修改日期
表2-> Id是PK | CaseNumber是FK | 年齡
表2具有相同CaseNumber的許多記錄。 我想查詢以下內容:
對於表2中的每個CaseNumber,請找到最小Age 。 例如,在表2中找到所有記錄的最小年齡。
不適用於特定的CaseNumber 。 當我刪除where子句時,奇怪的事情發生了。 我不能為每個案例數設置最小值。 我收到的不止是相同案例編號的行。 看來min(age)不起作用。
由於這種關系是一對多的,所以我有一些困難。 我該如何處理?
樣本記錄如下:
表1 CaseNumber CreatedDate ModifiedDate
1 12/12/2012 25/12/2012
2 14/12/2012 15/12/2012
3 16/12/2012 16/12/2012
4 17/12/2012 17/12/2012
5 17/12/2012 25/12/2012
表2 ID案件編號年齡
1 2 23
2 2 34
3 2 19
4 3 25
5 4 26
6 4 50
我只想返回3行:
19歲的2號病例
25歲的3號病例
26歲的4號病例
SELECT CaseNumber, CreatedDate, ModifiedDate,
MIN(b.Age) Age
FROM Table1 a
INNER JOIN Table2 b
ON a.CaseNumber = b.CaseNumber
WHERE a.CaseNumber = 7
GROUP BY CaseNumber, CreatedDate, ModifiedDate
SELECT B.Id ,B.CaseNumber,MIN(B.Age),A.CreateDate , A.ModifiedDate FROM TABLE1 A INNER JOIN TABLE2 B ON A.CaseNumber = B.CaseNumber WHERE B.CaseNumber = 7 GROUP BY B.Id,B.CaseNumber,A.CreateDate,A.ModifiedDate
SELECT B.Id ,B.CaseNumber,MIN(B.Age),A.CreateDate , A.ModifiedDate FROM TABLE1 A INNER JOIN TABLE2 B ON A.CaseNumber = B.CaseNumber WHERE B.CaseNumber IN (SELECT CaseNumber from Table2) GROUP BY B.Id,B.CaseNumber,A.CreateDate,A.ModifiedDate
你試試這個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.