2015-09-10 44 views
1

我一直堅持這一段時間,並希望有人能夠提供幫助。PHP&MySQL - LEFT JOIN? SUBQUERY?通過...分組? - 限制1

我已經做了一個簡單的mysql查詢(見下文)哪些工作正常,但現在我需要改變它從其他表中檢索額外的數據。

這裏是我的三個表:

成員表

  • ID
  • 的firstName
  • lastName的

認證表

  • ID
  • MEMBERID
  • courseID
  • certificationDate

場表

  • ID
  • courseTitle
  • 級別

有一些會員可以參加的課程。當他們這樣做時,他們會獲得與正確的成員和課程相對應的認證。

課程水平提高。

我想列出我的所有成員,並顯示他們的最高認證(根據它的級別)和課程名稱。

不是所有的成員都有認證,但我仍然需要檢索他們的數據。

我需要調整下面的查詢以包含用戶的最高認證和最高認證。我試圖避免每個成員的多個認證。

任何幫助將是驚人的,因爲我一直在試圖解決這個問題。我試過左加入,GROUP BY,子查詢,只是無法讓我的頭在附近。

謝謝。

// Member Query 
$tableMember = $wpdb->prefix . "dmc_diver"; 
$tableCertifications = $wpdb->prefix . "dmc_certifications"; 
$tableCourse = $wpdb->prefix . "dmc_course"; 

$memberQuery = $wpdb->get_results(" 

    SELECT 
    ID, 
    firstName, 
    lastName 

    FROM 
    $tableMember 

"); 
+2

爲什麼你叫喊? :) –

+1

因爲MySQL正在讓我! :-P –

回答

2

下面是一個方法中,使用一個相關子查詢:

select m.*, 
     (select max(co.level) 
     from certification c join 
      course co 
      on c.id = co.courseid 
     where c.memberid = m.id 
     ) as max_level 
from members m;