Tag SELECT

[MySQL] การจัดการเมื่อต้อง Query กับฐานข้อมูลที่ขนาดใหญ่

บางครั้งเรามี Query ที่ Join Table เยอะๆ และมีผลลัพธ์มหาศาลประมาณหลายแสนรายการครับ เราอาจจะมีการปรับจูน DB เช่น ทำ Index หรือทำ Query Cache เป็นต้น แต่ในมุมของ Dev เราสามารถปรับโปรแกรมได้เหมือนกัน โดยปรับ Query จากเดิมที่ Join กับหลายๆ Table มา Query ตรงๆที่ละ Table แล้วนำข้อมูลมา Process ใน App แทนครับ

[DB2] Toad กับการแสดงข้อมูลประเภท CLOB ในผลลัพธ์ที่ได้จากการ SELECT

ก่อนอื่นที่เราจะมาดูพวก Setting ใน TOAD กัน เราต้องรู้ก่อนนะครับว่า CLOB คือ Character Large Object แปลตรงตัวเลยครับ เป็นชนิดช้อมูลที่เก็บตัวอักษรเยอะๆมากๆครับของ DB2 ถ้าใน SQL Server จะเป็น Type Text ครับ เนื่องจากข้อมูลมันใหญ่มากๆครับ ตัว Toad เลยจึงไม่สนใจ Field ประเภทนี้ เมื่อเราได้ SELECT ข้อมูลครับ และเพิ่มความเร็วใจการทำงานของ Toad ด้วยครับ โดยแสดงเป็นคำว่า (Excluded)  ดังรูป สำหรับการเปิดโปรแกรม Toad แสดงข้อมูลประเภท CLOB…

[DB2] SELECT TOP(1) IN DB2

จริงๆวางโครงบทความนี้มานานและ แต่เพิ่มจะมีโอกาศได้เขียนจริงๆจังๆ ซะที เข้าที่ปัญหาเลย คือ ว่าเราต้องการ Query เพื่อดึงข้อมูลในแถวแรกขึ้นมาก หากเป็น MySQL, MS SQL Server เราสามารถใช้คำสั่ง TOP(จำนวนแถวที่ต้องการได้เลย) แต่ถ้าเป็น DB2 จะมีคำสั่ง (ใช้ได้กับ DB2 8.1 ขึ้นไป) โดยเพิ่มเข้าไป ดังนี้ครับ FETCH FIRST 1 ROW ONLY [sql] — FIRST SINGLE ROWS SELECT * FROM <TABLE_NAME> FETCH FIRST…

[SQL SERVER] SELECT ชื่อ Column จากตาราง

สามารถเอา Code ชุดนี้ไปใช้งานได้เลย หรือจะทำเป็น Code Snippets เอาไปใช้งานได้เลย [sql] SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =’YourTableName’ AND TABLE_SCHEMA=’YourSchemaName’ [/sql] ตัวอย่างการใช้งาน [sql] SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME =’CUSTOMER’ AND TABLE_SCHEMA=’HRM’ [/sql]

SELECT ซ้อน SELECT

หลายครั้งที่เราได้โจทย์ หรือปัญหามาแก้โดยใช้วิธีการ Query จากฐานข้อมูลมา ซึ่งมีรูปแบบการ Query หลายแบบ ได้แก่ การเขียน JOIN ตาราง, UNION หรือ ทำเป็น Sub Query เป็นต้น ในวันนี้ผมขอนำเสนอวิธีการเขียน SELECT IN SELECT ซึ่งเป็นวิธีการเขียน Query แบบหนึ่งที่ช่วยแก้ปัญหาได้มากมาย และลดการเขียน Coding ที่ไม่จำเป็นได้อีก ตัวอย่างปัญหา เราต้องการดูข้อมูลการจ่ายดอกเบี้ยทั้งหมด เพื่อนำมาออกรายงาน โดยมีเงื่อนไขดังนี้ ข้อมูลการจ่ายดอกเบี้ยในเดือนเดือนกัน ให้นำมารวมกัน ข้อมูลการจ่ายดอกเบี้ยช่วงระหว่างเดือน ให้แยกกลุ่มออกมา เช่น จ่ายดอกเบี้ยระหว่างวันที่ 2014-04-21 ถึง 2014-05-06 ระบบต้องตีความเป็นการจ่ายดอกเบี้ยระหว่างเดือน…

[SQL Server] SELECT เมื่อพบข้อมูลวันที่เป็น 1990-01-01 ให้แสดงเป็น String ว่าง

ปัญหาที่ได้เจอวันนี้ คือ SELECT ข้อมูลวันที่ ที่บาง Record เก็บข้อมูลไม่ได้มีการเก็บข้อมูลวันที่ แต่ผลลัพธ์ที่ได้กลับเป็น 01-Jan-1990 (SQL Server ใจดีใส่ให้) ถ้าหาก User มาเห็นคงตกใจ คิดว่าระบบงานของเราเกิด Defect ชิ้นใหญ่แน่นอน เตรียมข้อมูล กำหนดโครงสร้างตาราง ดังรูป ใส่ข้อมูลคร่าวๆลงไป ดังรูป ความต้องการ แสดงข้อมูลยอด BUY/SELL โดยต้องแสดง TX_ID, PRODUCT_NAME, TX_UNIT, TX_TYPE, TX_TradeDate และ TX_IsConfirm ต้องการให้แถวที่มีข้อมูล Date ข้อมูลวันที่เป็น 1990-01-01 ระบบต้องไม่แสดงผลเป็น 1990-01-01…

[SQL Server] SELECT * From Table where 1 > 2

เวลาทำงานหลายคนอาจจะเจอ SQL แปลก เช่น SELECT * FROM INVESTTX WHERE 1 > 2 Q: WHERE 1 > 2 คือ อะไร ? A: คือ การ SELECT ข้อมูล RECORD เปล่าขึ้นมา เพื่ออัปเดต หรือ ทำเป็น TEMP Table เพื่อการใช้งานต่อไป ตัวอย่างการใช้งาน SELECT RECORD เปล่าขึ้นมา Update Recordset ใน…