簡體   English   中英

一對多關系/ SQL查詢中的每個關系

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM