2012-11-16 3 views
0

defn이 "복잡한 쿼리"인지는 모르지만 저처럼 멍청한 내용입니다. 2 개의 SQL "Complex"쿼리를 결합하십시오.

그래서 나는 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_ID을 사용하여 tblcontent에서 데이터를 가져 오려면 어떻게해야합니까? 그냥 그걸 추가 할 수 없습니다 :

$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' 날짜 필드가 있으면 최신 항목을 얻으려면 DESCENDING ORDER USING DESC를 사용하여 주문하십시오. – WatsMyName

+0

오 예, 테스트 할 때 다시 변경하는 것을 잊었습니다. 그것은 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 
관련 문제