วันพฤหัสบดีที่ 11 กันยายน พ.ศ. 2557

MySQL คิวรี่แบบแหวกแนว

มีวิธีการใช้คำสั่งคิวรี่ของ MySQL แบบแหวกแนว เพื่อสนองความต้องการใช้ประโยชน์
จากฐานข้อมูลมีดังนี้

1.แสดงหมายเลขลำดับของรายการที่แสดง
SELECT @row_number := @row_number +1 AS No, pid
FROM `lab1`, (SELECT @row_number:=0) AS t
WHERE LENGTH(pid)=13
ORDER BY pid

     หมายเหตุ : ถ้ามีการ JOIN จะต้องใส่หลังการ JOIN ดังนี้(สีแดงเป็นส่วนที่แสดงสำดับ)
        SELECT @row_number:=@row_number+1 AS No,
        screen_person.fname,screen_person.moo ,sys_district.DISTRICT_NAME ,
        sys_amphur.AMPHUR_NAME , sys_province.PROVINCE_NAME
        FROM screen_person  LEFT Join sys_district On screen_person.subdistrict_id =
        sys_district.DISTRICT_ID LEFT Join sys_amphur On screen_person.district_id =
        sys_amphur.AMPHUR_ID LEFT Join sys_province On screen_person.province_id =
        sys_province.PROVINCE_ID
        (SELECT @row_number:=0) AS t ORDER BY screen_person.pid 

2.คำสั่ง GROUP BY ให้ได้รายการสุดท้าย
(ปกติ Group by จะรวมรายการจากหลายรายการตามเงื่อนไข
แต่จะแสดงผลได้เป็นรายการแรกเท่านั้น) หากต้องการให้แสดง
รายการสุดท้าย ทำดังนี้
(SELECT pid,chk_date,fbs
FROM
    (select pid,chk_date,fbs from lab1 order by chk_date DESC) as check_date
GROUP BY pid)

3.การใช้ CASE WHEN สำหรับเปรียบเทียบค่ามากกว่าน้อยกว่า

CASE
   WHEN t2.fbs<=120 THEN 'ระดับ 0'
   WHEN t2.fbs<=150 THEN 'ระดับ 1'
   WHEN t2.fbs<=180 THEN 'ระดับ 2'
   WHEN t2.fbs<=220 THEN 'ระดับ 3'
END AS PT_GROUP

4.การใช้ CASE WHEN สำหรับเปรียบเทียบค่าเท่ากับ
CASE t2.fbs
   WHEN '1' THEN 'ระดับ 0'
   WHEN '2' THEN 'ระดับ 1'
   WHEN '3' THEN 'ระดับ 2'
   WHEN '4' THEN 'ระดับ 3'
END AS PT_GROUP

5.เลือกแสดงเฉพาะรายการสุดท้ายตามจำนวนที่ต้องการ
(ตย.แสดงเฉพาะ 6 รายการสุดท้าย) 

SELECT *
FROM
 (SELECT * FROM lab1 WHERE pid ='0000000000139' ORDER BY chk_date
 DESC LIMIT 6) AS tbl
ORDER BY tbl.chk_date ASC

 6. SQL update from one Table to anather based on a ID match

UPDATE Sales_Import SI,RetrieveAccountNumber RAN SET SI.AccountNumber = RAN.AccountNumber WHERE SI.LeadID = RAN.LeadID

7.ความแตกต่างระหว่าง 2 คำสั่ง
$row = mysql_fetch_assoc($result);  กับ $row=mysql_fetch_row($result); 
โดยที่
    mysql_fetch_assoc($result) จะสามารถอ้างอิงชื่อฟิวด์ได้โยตรง ดังนี้
          $row = mysql_fetch_assoc($result);
          $default_geo_id= $row['default_geo_id'];  //ระบุชื่อฟิวด์ จะไม่กระทบเวลาลบหรือเพิ่มฟิวด์ใหม่

     
    แต่  $row=mysql_fetch_row($result); จะอ้างอิงด้วยลำดับที่ของฟิวด์ ดังนี่
             $row=mysql_fetch_row($result);
             $default_geo_id= $row[5];  //ระบุ 5 เป็บลำดับที่ของฟิวด์ จะกระทบเวลาลบหรือเพิ่มฟิวด์ใหม่

ไม่มีความคิดเห็น: