วันพฤหัสบดีที่ 1 ธันวาคม พ.ศ. 2559

การเชื่อมตาราง Left Join 1 to 2 Table


การเชื่อมตาราง 1 ไป 2 ตาราง โดยหาผลรวมของตารางย่อย

1. Table Person








2. Table Pesron_train





3. Table Person_work


Code

SELECT 
  u.ids,
  u.names_en,
  (SELECT COUNT(b.ids) FROM person_train b WHERE b.ids = u.ids) as ctrain,
  (SELECT COUNT(m.ids) FROM person_work m WHERE m.ids = u.ids) as cwork  
FROM
  person as u
ORDER BY u.ids


ผลลัพธ์


วันพฤหัสบดีที่ 17 มีนาคม พ.ศ. 2559

ปรับเปรียนการแสดงผลของ MYSQL Transpose จากแนวตั้ง เป็นแนวนอน


ตารางเดิม

rdate ปี-เดือน   |  infl  |
--------------------------------------
2010-1             |    20
2010-2             |   40
2010-3             |   50
----------------------------------------


MYSQL CODE

SELECT 
  year(r_date) + 543  AS  `year`,
  SUM(CASE WHEN month(r_date) = '01' THEN format(p.infl, 2) ELSE 0 END) AS jan,
  SUM(CASE WHEN month(r_date) = '02' THEN format(p.infl, 2) ELSE 0 END) AS feb,
  SUM(CASE WHEN month(r_date) = '03' THEN format(p.infl, 2) ELSE 0 END) AS mar,
  SUM(CASE WHEN month(r_date) = '04' THEN format(p.infl, 2) ELSE 0 END) AS apr,
  SUM(CASE WHEN month(r_date) = '05' THEN format(p.infl, 2) ELSE 0 END) AS may,
  SUM(CASE WHEN month(r_date) = '06' THEN format(p.infl, 2) ELSE 0 END) AS jun,
  SUM(CASE WHEN month(r_date) = '07' THEN format(p.infl, 2) ELSE 0 END) AS jul,
  SUM(CASE WHEN month(r_date) = '08' THEN format(p.infl, 2) ELSE 0 END) AS aug,
  SUM(CASE WHEN month(r_date) = '09' THEN format(p.infl, 2) ELSE 0 END) AS sep,
  SUM(CASE WHEN month(r_date) = '10' THEN format(p.infl, 2) ELSE 0 END) AS oct,
  SUM(CASE WHEN month(r_date) = '11' THEN format(p.infl, 2) ELSE 0 END) AS nov,
  SUM(CASE WHEN month(r_date) = '12' THEN format(p.infl, 2) ELSE 0 END) AS dec,
  SUM(CASE WHEN year(r_date) = year(r_date) THEN format(p.infl, 2) ELSE 0 END) AS total
FROM
  plantreal24
WHERE
  YEAR(r_date) BETWEEN '1974' AND year(CURDATE()) ** ถึงปีปัจจุบันนี้
GROUP BY
  year(r_date) 
order by YEAR(r_date)


ผลลัพธ์

Year  |  gjan  | gfeb | gmar
--------------------------------------
2010  |    20  |   40  |    50
----------------------------------------