2012-11-16 87 views
0

我不知道这些是否是“复杂查询”,但它们对于像我这样的noob来说看起来非常复杂。结合了2个SQL“复杂”查询

所以我这里有一个查询,将得到CUSTOMER_ID的最新图表= 5:

$query = "SELECT c.Chart_ID, c.Chart_Notes 
      FROM tblchart AS c WHERE c.Customer_ID=5 
      ORDER BY c.Last_Edited ASC LIMIT 1"; 

但我必须把它与一个使用Chart_ID为外键的另一个表。如何使用tblchart.Chart_ID=tblcontent.Chart_IDtblcontent获取数据?我不能只是将其添加为:

$query = "SELECT c.Chart_ID, c.Chart_Notes, d.Content_Desc, d.Content_Title 
      FROM tblchart AS c, tblcontent AS d 
      WHERE c.Customer_ID=5 AND c.Chart_ID=d.Chart_ID 
      ORDER BY c.Last_Edited DESC LIMIT 1"; 

可以吗?因为这将限制搜索只有一个...使用LIMIT 1只是为了获得最新的,但对于后续查询(扩展查询),除了我发布的第一个查询外,我还期待从tblcontent中提取多个结果。一个连接,也许,或联合,或一个复杂的查询,但如何?请帮助我吗?谢谢。

+0

使用第二个查询时没有使用限制怎么了?它将包含您从第一个查询中获得的结果。此外,如果'c.Last_Edited'日期字段,要获取最新条目,您应该'使用DESC命令按降序排列。 – WatsMyName

+0

噢,是的,我在测试时忘记将它改回来。它应该是DESC。而且...不会显示所有图表(只是按desc顺序排列)?我只是想看看最新的图表与其绑定的tblcontents。谢谢你的方式。 – Fred

回答

1
SELECT a.Chart_ID, a.Chart_Notes, c.Content_Desc, c.Content_Title 
FROM tblChart a 
     INNER JOIN 
     (
      SELECT Chart_ID, MAX(Last_edited) maxEdited 
      FROM tblChart 
      GROUP BY Chart_ID 
     ) b ON a.Chart_ID = b.Chart_ID AND 
       a.Last_Edited = b.maxEdited 
     INNER JOIN tblcontent c 
      ON a.Chart_ID = c.Chart_ID 
WHERE a.Customer_ID=5