2012-04-02 16 views
0

我正在尋找只顯示記錄中子行中存在行的記錄。SQL加入幫助?只顯示子表中包含1個或多個記錄的結果

我有兩個表。我只想從IP_OP中返回包含CD_REVIEWS中至少一條記錄的記錄。我無法弄清楚如何做到這一點。

SELECT 
    IP_OP.PATIENT_CTRL_NUM, 
    IP_OP.ADMIT_HOUR, 
    CD.REVIEW_DATE 
FROM 
    IP_OP_PATIENT_DET IP_OP, 
    CD_REVIEWS CD 
WHERE 

這兩個表都包含PATIENT_CTRL_NUM。

+0

您不應該使用隱含的連接語法。這是一個糟糕的編程技術。 – HLGEM 2012-04-02 19:24:25

回答

2

這要看review_date你想OT選擇,但這樣的事情應該工作:

SELECT  IP_OP.PATIENT_CTRL_NUM, 
      IP_OP.ADMIT_HOUR, 
      MAX(CD.REVIEW_DATE) 
FROM  IP_OP_PATIENT_DET IP_OP 
INNER JOIN CD_REVIEWS CD 
on   IP_OP.PATIENT_CTRL_NUM = CD.PATIENT_CTRL_NUM --or whatever column you need to join on 
WHERE ..... 
GROUP BY IP_OP.PATIENT_CTRL_NUM, IP_OP.ADMIT_HOUR 

如果你是罰款返回多個IP_OP_PATIENT_DET記錄,那麼你可能會失去的MAXGROUP BY

0
SELECT 
    IP_OP.PATIENT_CTRL_NUM, 
    IP_OP.ADMIT_HOUR, 
    CD.REVIEW_DATE 
FROM 
    IP_OP_PATIENT_DET IP_OP INNER JOIN CD_REVIEWS CD 
    ON IP_OP.PATIENT_CTRL_NUM = CD.PATIENT_CTRL_NUM