วันศุกร์ที่ 2 มิถุนายน พ.ศ. 2560

สร้างข้อมูลสำหรับสร้างกราฟรายปี Database for Chart


<DATABASE>-----------------------------------------------------------------------------------------------
  ตารางข้อมูลแสดงข้อมูลทุกปี



<CODE MYSQL >--------------------------------------------------------------------------------------------
 ต้องการแสดงผลข้อมูลของแต่ล่ะปี เพื่อนำไป Plot Graph โดยจะต้องแยกออกเป็นปี ๆ ที่ต้องการ

SELECT now_for.r_date, now_for.fore24 as now_year, l1_for.l1_fore24 as l1_year, l2_for.l2_fore24 as l2_year, l3_for.l3_fore24 as l3_year,
lmax_fore24.lmax_fore24 as max18_year, lmin_fore24.lmin_fore24 as min35_year, l_curve.uppers, l_curve.lowers
FROM
(
  SELECT
   sk24_forebay5y.r_date,
   sk24_forebay5y.fore24
  FROM
   sk24_forebay5y
  WHERE
      YEAR(sk24_forebay5y.r_date) = YEAR(CURDATE())) as now_for
RIGHT JOIN(
  (SELECT
    sk24_forebay5y.r_date,
    sk24_forebay5y.fore24 as l1_fore24
  FROM
    sk24_forebay5y
  WHERE
   YEAR(sk24_forebay5y.r_date) = YEAR(CURDATE())-1) as l1_for
 )ON(
  DayOfYear(now_for.r_date)= DayOfYear(l1_for.r_date)
 )
RIGHT JOIN(
  (SELECT
    sk24_forebay5y.r_date,
    sk24_forebay5y.fore24 as l2_fore24
  FROM
    sk24_forebay5y
  WHERE
   YEAR(sk24_forebay5y.r_date) = YEAR(CURDATE()) - 2) as l2_for
 )ON(
  DayOfYear(l1_for.r_date)= DayOfYear(l2_for.r_date)
 )
RIGHT JOIN(
  (SELECT
    sk24_forebay5y.r_date,
    sk24_forebay5y.fore24 as l3_fore24
  FROM
    sk24_forebay5y
  WHERE
   YEAR(sk24_forebay5y.r_date) = YEAR(CURDATE()) - 3) as l3_for
 )ON(
  DayOfYear(l2_for.r_date)= DayOfYear(l3_for.r_date)
 )
RIGHT JOIN(
  (SELECT
    sk24_forebay5y.r_date,
    sk24_forebay5y.fore24 as lmax_fore24
  FROM
    sk24_forebay5y
  WHERE
   YEAR(sk24_forebay5y.r_date) = 1975) as lmax_fore24
 )ON(
  DayOfYear(l3_for.r_date)= DayOfYear(lmax_fore24.r_date)
 )
RIGHT JOIN(
  (SELECT
    sk24_forebay5y.r_date,
    sk24_forebay5y.fore24 as lmin_fore24
  FROM
    sk24_forebay5y
  WHERE
   YEAR(sk24_forebay5y.r_date) = 1992) as lmin_fore24
 )ON(
  DayOfYear(l3_for.r_date)= DayOfYear(lmin_fore24.r_date)
 )
JOIN(
 SELECT  rulecurve.d_year,
         rulecurve.upper as uppers,
         rulecurve.lower as lowers
 FROM rulecurve ) as l_curve
    ON (l_curve.d_year =  DayOfYear(l3_for.r_date))

ORDER BY
  l3_for.r_date ASC



<RESULT MYSQL>---------------------------------------------------------------------------------------








วันพฤหัสบดีที่ 27 เมษายน พ.ศ. 2560

mysql หาวันสุดท้ายของเดือนที่แล้ว

date = LAST_DAY(DATE_ADD(cutdate(), INTERVAL -1 MONTH))

*กรณีเป็นวันใช้ DAY
** กรณีเป็นปีใช้ YEAR
** -1 คือย้อนหลัง 1 ค่า +1 คือไปข้างหน้า 1 ค่า

วันอังคารที่ 31 มกราคม พ.ศ. 2560

ตั้งแค่แสดงวันภาษาไทย และแสดงหน่วยทศนิยม

แสดงวันที่ไทย

เช่น  31 มกราคม 2560


function ThaiEachDate($vardate="") {  
 $_month_name = array("01"=>"มกราคม",  "02"=>"กุมภาพันธ์",  "03"=>"มีนาคม",  
    "04"=>"เมษายน",  "05"=>"พฤษภาคม",  "06"=>"มิถุนายน",  
    "07"=>"กรกฎาคม",  "08"=>"สิงหาคม",  "09"=>"กันยายน",  
    "10"=>"ตุลาคม", "11"=>"พฤศจิกายน",  "12"=>"ธันวาคม");
$yy =substr($vardate,0,4);$mm =substr($vardate,5,2);$dd =substr($vardate,8,2);
$yy += 543;
 if ($yy==543){
  $dateT = "-";
 }else{
  $dateT=$dd ." ".$_month_name[$mm]."  ".$yy;
 }
  return $dateT;
}    

แสดง
   31-01-60


function ThaiEachDate2($vardate="") {  
 $_month_name = array("01"=>"01",  "02"=>"02",  "03"=>"03",  
    "04"=>"04",  "05"=>"05",  "06"=>"06",  
    "07"=>"07",  "08"=>"08",  "09"=>"09",  
    "10"=>"10", "11"=>"11",  "12"=>"12");
$yy =substr($vardate,2,2);$mm =substr($vardate,5,2);$dd =substr($vardate,8,2);
$yy += 43;
 if ($yy==43){
  $dateT = "-";
 }else{
  $dateT=$dd ." ".$_month_name[$mm]."  ".$yy;
 }
  return $dateT;
}  

แสดง
     31-ม.ค.-60

function ThaiEachDate1($vardate="") {  
 $_month_name = array("01"=>"ม.ค.",  "02"=>"ก.พ.",  "03"=>"มี.ค.",  
    "04"=>"เม.ย.",  "05"=>"พ.ค.",  "06"=>"มิ.ย.",  
    "07"=>"ก.ค.",  "08"=>"ส.ค.",  "09"=>"ก.ย.",  
    "10"=>"ต.ค.", "11"=>"พ.ย.",  "12"=>"ธ.ค.");
$yy =substr($vardate,2,2);$mm =substr($vardate,5,2);$dd =substr($vardate,8,2);
$yy += 43;
 if ($yy==43){
  $dateT = "-";
 }else{
  $dateT=$dd ." ".$_month_name[$mm]."  ".$yy;
 }
  return $dateT;
}  

-----------------------------------------------------------------------------------------------------------------------
แสดงหน่วยทศนิยม หลาย ๆ ตำแหน่ง


function digi($data_digi,$show=0,$dot=0)
{
if($data_digi==0 and $show==0)
{$digi="";}
else
{$digi=number_format ($data_digi,$dot,'.',',');}
return $digi;
}
function digi2($data_digi)
{
$digi2=number_format ($data_digi,2,'.',',');
return $digi2;
}
function digi3($data_digi)
{
$digi3=number_format ($data_digi,3,'.',',');
return $digi3;
}
function digi4($data_digi){
$digi4=number_format ($data_digi,4,'.',',');
return $digi4;
}

วันพฤหัสบดีที่ 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
----------------------------------------


วันเสาร์ที่ 13 มิถุนายน พ.ศ. 2558

ต่อมือถือ Android แล้วหาไม่เจอ MTP USB device not install

ปัญหาที่เจอและเครื่องฟ้องขึ้นมาก็คือ MTP USB device not install หรือมีปัญหา หรือว่ากาผิด และผลก็คือ เครื่องคอมมองไม่เห็นโทรศัพท์ของเราเลยครับ

หาทางแก้อยู่นานมาก ก็ไม่เจอทางออกสักที จนในที่สุด วันนี้ก็ได้เจอกับทางออกครับ
ซึ่งเป็นวิธีการแก้ปัญหาด้วยการเข้าไปแก้ไขการตั้งค่าใน Registry โดยทำตามขั้นตอน ดังนี้ครับ

1.  ขั้นตอนแรกเริ่มต้นด้วยการ Run the registry editor (ด้วยการพิมพ์ “regedit” ใน command-line หรือว่าช่อง Run ครับ)
2.  ลดความเสี่ยงกรณีมีปัญหาด้วยการ Backup ค่า registry ปัจจุบันด้วยการไปที่  (File -> Export) แล้ว Save เก็บไว้ครับ
3.  ให้เข้าไปในโฟลเดอร์ตามลำดับดังนี้ : HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Control / Class
4.  ทางด้านซ้ายให้มองหา  {EEC5AD98-8080-425F-922A-DABF3DE3F69A} และคลิ๊กเข้าไป
5.  ในช่องด้านขวาให้มองหาค่าที่ขึ้นต้นด้วย “Upper…”  แล้วจัดการลบมันซะ
6.  หลังจากนั้นให้ถอดมือถือไอโฟน หรือว่า โซนี เอ็กซ์พีเรียออก
7.  รีสตาร์ท เครื่อง 1 ครั้ง
8.  จากนั้น เมื่อเปิดเครื่องเสร็จแล้ว รอให้บูทเสร็จและก็ลองเสียบดู คราวนี้โผล่หมดเลยครับ ในช่อง Portable device ทั้งของ iPhone และของ Sony Xperia ครับ
9.  เริ่มก็อปวางและก็ลงเพลงสำหรับ Xperia ได้เลยครับ

วันจันทร์ที่ 18 พฤษภาคม พ.ศ. 2558

การหาผลต่างระหว่างแถว โดยการลบกัน Table Row Diff

การหาผลต่างระหว่างตาราง



 SELECT mt1.ids,
        mt1.dates,
        mt1.times,
        mt1.waterflow,
        IFNULL(mt1.waterflow - mt2.waterflow, 0) as Diffs
 FROM nsd mt1
      LEFT JOIN nsd mt2 ON mt2.ids =
      (SELECT MAX(ids) FROM nsd mt3 WHERE mt3.ids < mt1.ids AND
       mt3.dates BETWEEN '20150519' AND '20150519')
 WHERE mt1.dates BETWEEN '20150519' AND '20150519'
 ORDER BY mt1.ids