mysql多表查詢分組統計

表結構:

課程表t_lrm_course

講師表t_lrm_lecturer

課程與講師的關聯表t_lrm_course_lecturer

目錄表t_lrm_catalog

課程與目錄的關聯表t_lrm_course_catalog

用戶表t_osm_user_info

課程授權表t_lrm_authority_user

需求:

需要查詢出每個課程對應的講師、目錄和用戶的信息。

要求按課程分條展示。

SQL語句:

select GROUP_CONCAT(DISTINCT(c.catalog_name) SEPARATOR ',') 'catalog_name',a.course_code,
       a.course_name,a.school_time,
       case when a.course_type='online' then a.period when a.course_type='face2face' then 
       CONCAT(a.period,case a.period_unit when 'day' then '天' when 'hour' 
       then '小時' when 'minute' then '分鍾 end) end 'period' , 
       a.school_location,a.credit,
       GROUP_CONCAT(DISTINCT(case d.is_speaker when 1 then e.lecturer_name else '' end) 
       SEPARATOR '') 'speaker' ,
       GROUP_CONCAT(DISTINCT(case d.is_speaker when 0 then e.lecturer_name else '' end) 
       SEPARATOR ' ') 'other_lecturer' ,
       a.cost,a.course_source,
       case when INSTR(a.device_type,'PC') >0 then '可' else '不可' end  'pc_device_type',
      case when INSTR(a.device_type,'MOBILE') >0 then '可' else '不可' end 'mobile_device_type',
       case a.credit_requirement when 'finishCourse' then '完成課程' when 'gradePassed' 
       then '考試成績通過' end 'credit_requirement',
       GROUP_CONCAT(DISTINCT(g.user_name) SEPARATOR ',') 'authority_user' ,
       case a.open_type when 'partOpen' then '部分開放' when 'allOpen' then '全部開放' 
       when 'close' then '不開放' end 'open_type'
from t_lrm_course a
left join t_lrm_course_catalog b on a.course_id = b.course_id
left join t_lrm_catalog c on c.catalog_id = b.catalog_id
left join t_lrm_course_lecturer d on d.course_id = a.course_id
left join t_lrm_lecturer e on e.lecturer_id = d.lecturer_id
left join t_lrm_course_authority f on f.course_id = a.course_id
left join t_osm_user_info g on g.user_id = f.user_id
where 1=1 and a.course_id = '82977f40749b431fbef22e6356dea087'
and a.course_type='face2face'
group by a.course_id;


備注:

其中使用了mysql的多個函數:

  1. group_concat

  2. case when then end

  3. instr

更多相關文章
  • 這是我的代碼:前提是做了一個view:att_sumbase首先分開統計每天的中午.下午飯點人數,這時需要分別去除中午和下午重複打卡的人.用了記錄集的交,嵌套select的知識.注意不能直接使用union,這裏只能使用union all,因爲union會去掉重複記錄,一個員工上午吃了,下午也吃了,u ...
  • 相信分頁查詢對于很多開發者來說都是司空見慣的事情,首先按照查詢條件搜索出分頁列表數據和總的記錄數,獲取總的記錄數一般是:select count(1) as total from xxx where ..........這沒有問題,但是如果查詢的條件有分組group by那這個時候獲取總數就有問題了 ...
  •         create_time時間格式         SELECT DATE_FORMAT(create_time,'%Y%u') weeks,COUNT(id) COUNT FROM role GROUP BY weeks;         SELECT DATE_FORMAT(crea ...
  • void Main() { int[] comparValue = { 11, 22, 11, 11, 33, 11, 22 }; var query = (fromnumin ( fromnumberin comparValue group numberbynumberinto g select ...
  • ? 基本常用查詢 --select select * from student; --all 查詢所有 select all sex from student; --distinct 過濾重複 select distinct sex from student; --count 統計 select c ...
  • 一.檢索單個對象      Query和Criteria都提供了返回單個對象的方法uniqueResult().先調用setMaxResult(1)方法,把最大檢索數目設爲1,在調用uniqueResult()方法.      Hx hx = (Hx)session.createQuery(&quo ...
  • 下面具體講講簡單的JOIN的用法了.首先我們假設有2個表A和B,他們的表結構和字段分別爲:表A:IDName1Tim2Jimmy3John4Tom表B:IDHobby1Football2Basketball2Tennis4Soccer1.  內聯結:Select A.Name, B.Hobby fr ...
  • 在mysql中查詢5條不重複的數據,使用以下:1 SELECT * FROM `table` ORDER BY RAND() LIMIT 5 就可以了.但是真正測試一下才發現這樣效率非常低.一個15萬余條的庫,查詢5條數據,居然要8秒以上 搜索Google,網上基本上都是查詢max(id) * ra ...
一周排行
  • 以下爲一個轉型成功地傳統服裝工廠老板總結出的轉型經驗.總結出了以下幾點供大家參考,一個服裝工廠要想成功轉型必須要具備以下幾種條件:一.老板的思維要與淘寶同步1.接受網路溝通方式:網路溝通,有據可查,雙方各自承諾了些什 ...
  •  staic變量是怎麽樣執行的?public class Client {public static int i = 0;static {  i = 100;}public static void main(Stri ...
  • 在windows平台使用github
    step1 注冊github注冊 github 賬號並創建一個repo,假設帳戶爲Your ...
  • 最近在研究Android應用軟件的開發,之前做了7.8年的C#,對Java並不熟悉,不過還好能夠看得懂一些! 根據之前的經驗,應用軟件的網路通信無非就是Socket和HTTP,其中Socket又可以用TCP和UDP, ...
  • 1.安裝 在linux中去:/usr/local/文件夾下:依次執行如下命令 sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \ openssl- ...
  • 71    段伏枥拿的這塊Telechips的開發板所用的主控芯片是TCC7901,相對于AU1200而言,是好得很多了.姑且不說那簡單易懂的編譯安裝環境,光是硬件的搭配就是AU1200所不能比擬的.AU1200並不 ...
  • GitHub刪除文件
    刪除單個文件 一般情況下,通常可直接在文件管理器中直接把文件刪了,或者用rm命令刪了$ r ...
  • 第一種-表格布局 這種表格布局對于局部布局,和自擴展布局非常適用 第二種-浮動布局 這種對于固定寬度的布局,能夠很好,簡單的實現 第三種-絕對定位+margin布局 一列固定,另一列自擴展 第四種-float+2次m ...
  • Apache防DDOS模塊mod_evasive的安裝配置和使用前些天,朋友的網站訪問很慢,查伺服器的連接數也不多,資源占用也少.懷疑有攻擊,便想裝上mod_evasive試試,試後一切正常,很爽安裝配置如下wget ...