一个查询中有多个MySQL表

时间:2013-05-17 14:58:51

标签: 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'
)

这些似乎都不起作用,而且非常令人沮丧。如果有人能为我提供一些指导,我们将不胜感激。

2 个答案:

答案 0 :(得分: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' 

答案 1 :(得分: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';  

...