2013-05-17 99 views
0

所以,我試圖查詢多個表。一個查詢中有多個MySQL表

這是我到目前爲止,:

SELECT * FROM patientdetails 
WHERE DATEDIFF(CURRENT_DATE, DOB) /365 <18 
and Gender='Male' 
AND RAMQ in 
(
    SELECT `RAMQ` 
    FROM `pathology` 
    WHERE `Result`='positive' 
) 

這一切正常,但我需要的日期比較日期字段在另一個表,我已經嘗試了許多不同的解決方案。

解決方案1:

SELECT * FROM patientdetails 
WHERE DATEDIFF(pathology.Date, DOB) /365 <18 
and Gender='Male' 
AND RAMQ in 
(
    SELECT `RAMQ` 
    FROM `pathology` 
    WHERE `Result`='positive' 
) 

解決方案2:

SELECT * FROM patientdetails p, pathology pp 
WHERE DATEDIFF(pp.Date, p.DOB) /365 <18 
and p.Gender='Male' 
AND p.RAMQ in 
(
    SELECT `RAMQ` 
    FROM `pathology` 
    WHERE `Result`='positive' 
) 

這些都不似乎工作,它很令人沮喪。如果有人能夠提供一些指導,我將不勝感激。

回答

1

JOIN他們這樣說:

SELECT d.* 
FROM patientdetails AS d 
INNER JOIN pathology AS p ON d.RAMQ = p.RAMQ 
WHERE DATEDIFF(p.Date, d.DOB) /365 < 18 
    AND d.Gender='Male' 
+0

謝謝,那正是我一直在尋找的東西,我明白現在加入的是什麼。 –

+0

@KevinWeber - 隨時歡迎您:) –

0

我們能用這個開始...

SELECT * 
    FROM patientdetails pd 
    JOIN pathology g 
    ON g.RAMQ = pd.RAMQ 
    AND g.Result = 'positive' 
WHERE pd.DOB > CURDATE() - INTERVAL 18 YEAR 
    AND pd.Gender='Male'; 

...?