2012-11-16 124 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