ฟอนต์ฟอรั่ม

F0NT Community (เก่า) => ห้องคอม => หิ้งคอม => โพสต์ถูกเริ่มโดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 14:53 น.

ชื่อเรื่อง: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 14:53 น.
ไม่รู้มีคนสนใจกันหรือเปล่า แต่ห้าว อยากเขียน

+++++++++++++++++++++++++++++++++++

เวลาเราเขียนเว็บ เขียนโปรแกรม ส่วนใหญ่ ก็จะทำงานกับฐานข้อมูล

ต่อให้เก่งโปรแกรมแค่ไหน ถ้า SQL ไม่ได้ ก็แป็ก

ตอนนี้แม้มี โปรแกรมออกมาอำนวยความสะดวก ในการจัดการดาต้าเบส เยอะแยะ

แต่ถ้าไม่มีพื้น เปิดโปรแกรมเข้าไป ก็อาจหงายหลังเอาง่ายๆเหมือนกัน


เริ่มแรก มารู้จัก ดาต้าเบสกันก่อน

ฐานข้อมูล ตอนนี้มีออกมาหลายยี่ห้อ ที่ดังๆก็เช่น  SQL Server , Microsoft Access , MySQL ,DB2

เราก็เลือกมาซักอย่างมาจะใช้อันไหน

ถ้าข้อมูลไม่เยอะมาก เน้นง่าย สะดวก ก็ Microsoft Access

ถ้าใหญ่มาก แต่เน้นสาย Microsoft (เขียนเว็บพวก ASP) ส่วนใหญ่นิยม SQL Server

หรือเน้นสายฟรี พวก PHP ก็ MySQL


เคยเห็นพวกเว็บบอร์ดสอนเขียนโปรแกรม จะมีคนเข้ามาถามว่า ASP กับ PHP อันไหนดีกว่ากัน

จากประสบกาม ของผม เอาง่ายๆเลยคือ โฮสที่เป็น Windows สำหรับ ASP จะแพงกว่า โฮส พวกสาย Linux สำหรับ PHP มาก

ต่อ Rep2 ละกัน เดี๊ยวยาวมาก ไม่มีคนอ่าน  :24:

ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: คุณชาย ( 737 ) เมื่อ 05 ก.ค. 2006, 14:56 น.
เข้ามาอ่านแล้วนา  :33:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 15:00 น.
อันนี้สอนเน้น ฝั่งไมโครซอฟละกันนะ ผมคล่องทางสายนี้หน่อย

แต่ผมไม่ได้จบคอมนะ อันไหนผิดๆถูกๆ ก็ท้วงด้วยละกัน

ต่อๆ +++++++++++++++++++++++++++


เวลาเราจะสร้างฐานข้อมูลอะไรซักอย่าง

มันจะได้ก้อนไฟล์มาก้อนหนึ่ง หน้าตาประมาณนี้

อันนี้ ของ Access

(http://666.filmmun.com/uploads/post-1-1152086918.jpg)

อันนี้ของ SQL Server

(http://666.filmmun.com/uploads/post-1-1152087043.jpg)

ข้างในไฟล์ ก็จะมีพวก Table หลายๆ Table ไว้เก็บข้อมูล

ลองนึกถึง หน้าตา Excel ละกัน น่าจะคุ้นๆ กันอยู่

ไฟล์ ดาต้าเบส ก็คือ ไฟล์ Excel ไฟล์หนึง

Table ก็จะ คล้ายๆ กับ Sheet ในไฟล์ Excel นั่นแหละ

หน้าตา Table เวลาเปิดมาดูก็จะประมาณนี้ครับ

(http://666.filmmun.com/uploads/post-1-1152087476.jpg)

ขอปิดบังนามสกุลกันหน่อยนะ พอดีเปิดของจริงมาให้ดูกันเลย

ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: โต เมื่อ 05 ก.ค. 2006, 15:02 น.
 :25:
ได้ความรู้ เอาไปเขียนโปรแกรมทำโปรเจค
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 15:32 น.
มาอธิบาย Table กันหน่อย

Table หนึ่ง จะประกอบด้วย หลาย Field (ใน Access) หรือ เรียกอีกอย่างหนึงว่า Column (ตาม Sql Server)

อธิบายกันก่อน ว่า Field คืออะไร

Field มันก็คือ ส่วนย่อย ของ Table อืม อธิบายไงดีหว่า ดูรูป ก่อนละกัน

ตามแนวตั้ง ตามลูกศร สีแดง เรียกว่า Field ตามแนวนอน ลูกศรสีน้ำเงิน เรียก Record นะครับ

(http://666.filmmun.com/uploads/post-1-1152087893.jpg)

เดาว่า เข้าใจกันหมดแล้วแหละ  :33:


....

ยกตัวอย่างเลยดีกว่า

สมมติว่าเราจะเก็บข้อมูลของ กระเทยในหมู่บ้าน กอไก่

ข้อมูลของกระเทยหนึ่งคน คือหนึ่งเรคคอร์ด

ข้อมูลของกระเทยหลายๆคน คือ หลายๆ เรคคอร์ด จะรวมอยู่ในหนึ่งเทเบิ้ล

แต่ข้อมูลหนึ่งเรคคอร์ด จะประกอบด้วยหลาย กอลั่ม (=column นั่นแหละ แต่ที่บริษัทผมเรียก กอลั่ม)

กอลั่ม คือ ชนิดของรายละเอียด เช่น ชื่อ , นามสกุล , ขนาด(ของแขน) , ความยาว(ของแขน)



โอ่ว รังสีขี้เกียจ แผ่ออกจากร่างแล้ว วันหลังมาต่อ  :29:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: คุณชาย ( 737 ) เมื่อ 05 ก.ค. 2006, 15:44 น.
รีบๆมาต่อนะครับ เห็นแววดีมีสาระแล้ว  :22:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 05 ก.ค. 2006, 17:20 น.
ขยันมาจากไหน ไปทำ http://www.devfree.com ก่อนเถอะ  :30:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 18:01 น.
อ้างคำพูดจาก: นายโอ้เอ้ เมื่อ 05 ก.ค. 2006, 17:20 น.
ขยันมาจากไหน ไปทำ http://www.devfree.com ก่อนเถอะ  :30:

โพสไวในนี้ แล้วไปแปะในนู้นไง ง่ายดี ครับ :30:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Zafire06 เมื่อ 05 ก.ค. 2006, 18:15 น.
กรี๊ดดดดดดดด
พี่ถลอกมาาาาาา ~~

:25:










:39:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เต่ามาก เมื่อ 05 ก.ค. 2006, 20:19 น.
ต่อด่วนเลยครับ  :25:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: แอ๊ะ เมื่อ 05 ก.ค. 2006, 20:59 น.
ถลอก กินอะไรผิดสำแดงมาหรือเปล่า  :42:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 05 ก.ค. 2006, 22:54 น.
ดูท่างทางแนวโน้มจะเอียงไปหา Microsoft SQL Server,MySQL? ถ้าเป็นอย่างนั้น ขอ break ก่อน(เพราะหลายๆคนเข้าใจว่า SQL ก็ SQL Server) จริงๆคำว่า SQL ไม่ได้หมายถึง software หรือ servers ใดๆเลย เพราะมันเป็นภาษา(Language)กลางที่ใช้ในการสอบถาม(Query)ข้อมูล(แต่การสอบถามนั้นแฝงด้วยคำสั่ง)เท่านั้น

http://th.wikipedia.org/wiki/SQL ภาษาไทย
http://en.wikipedia.org/wiki/SQL สำหรับ inter  :43:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 05 ก.ค. 2006, 23:42 น.
ใจเย็นดิพี่ท่าน อธิบายฐานข้อมูลก่อนไง เดี๊ยวพอถึงเรื่องภาษาจริงๆจะได้ไม่งง :42:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Ah! เมื่อ 06 ก.ค. 2006, 00:09 น.
 :25: :25: :25:
กำลังอยากรู้เรื่องเลยครับ

เชิญเฮียถลอกต่อได้เลย
แควนๆรออ่านเพียบๆ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 06 ก.ค. 2006, 14:54 น.
ขั้นสอง การ Normalization

มันคือ การลดความซ้ำซ้อนของฐานข้อมูล ทำให้มันไม่ ยุ่งเหยิง ยึกยือ ประมาณนั้น

ข้อดีคือ มันจะทำให้ฐานข้อมูล เป็นระเบียบ ฐานข้อมูลมีขนาดเล็ก ทำให้เวลาเราเรียกดูข้อมูล มันจะทำได้อย่างรวดเร็ว

แต่ เรื่องนี้ผมขี้เกียจเขียน เอาเป็นว่า

ไปอ่านที่ http://cptd.chandra.ac.th/selfstud/Database/normalization.htm แทนละกัน

เขียนได้เข้าใจง่ายพอสมควร

อ่ะ หลังจากเตรียมความพร้อมกันเรียบร้อย แล้ว

ก็ได้เวลามาเข้าเรื่อง ภาษา SQL จริงๆกันเสียที   :30: :30: :30:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 06 ก.ค. 2006, 15:02 น.
ขั้นสาม การดึงข้อมูลจาก Table แบบง่ายสุดๆ

ช่วงนี้จะเป็นคำสั่ง ให้ดึงข้อมูลจากในเทเบิ้ล ออกมาแสดงอย่างง่ายก่อนนะครับ

ลักษณะภาษาก็จะเป็น

Select ชื่อกอลั่ม1, ชื่อกอลั่ม2, ชื่อกอลั่ม3 From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)

เอาที่ละกันขึ้น

สมมติว่ามี Table เก็บข้อมูลนักเรียนในชั้นก่อน

หน้าเป็นแบบนี้

++++++++++++++++++++++++++= ทำงานก่อน เดี๊ยวมาต่อ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: หมีโหด* เมื่อ 06 ก.ค. 2006, 15:27 น.
มีสาระเป็นด้วย  :44:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 06 ก.ค. 2006, 15:30 น.
นานๆที  :33:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: คุณชาย ( 737 ) เมื่อ 06 ก.ค. 2006, 17:08 น.
:08: รีบมาต่อซิครับ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 06 ก.ค. 2006, 17:10 น.
อ้างคำพูดจาก: ถลอก เมื่อ 05 ก.ค. 2006, 23:42 น.
ใจเย็นดิพี่ท่าน อธิบายฐานข้อมูลก่อนไง เดี๊ยวพอถึงเรื่องภาษาจริงๆจะได้ไม่งง :42:
บ่ได้ใจร้อนเด้อ
แต่กลัวหลายๆคนเข้ามาอ่านแล้วไม่ได้ติดตามเท่านั้นเองครับ
เพราะผมเห็นนักเรียน/นักศึกษาหลายคนไม่รู้จักว่า SQL คืออะไรซะแล้ว(นึกว่าคือ DBMS)...
go ahead  :43:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 06 ก.ค. 2006, 17:19 น.
ขั้นสอง การ Normalization

มันคือ การลดความซ้ำซ้อนของฐานข้อมูล ทำให้มันไม่ ยุ่งเหยิง ยึกยือ ประมาณนั้น
อันนี้  :02:

ข้อดีคือ มันจะทำให้ฐานข้อมูล เป็นระเบียบ ฐานข้อมูลมีขนาดเล็ก ทำให้เวลาเราเรียกดูข้อมูล มันจะทำได้อย่างรวดเร็ว
แต่อันนี้  :44:
หลังการทำ normalize ส่วนมากจะทำให้ฐานขอมูลมีขนาดใหญ่ขึ้น(เพราะหลายครั้งต้องแตกตารางและสร้างความสัมพันธ์) จึงให้ไม่เร็ว(หลายๆคนใช้ตารางเดียวจะเร็วมาก แต่ไม่ normalize) ข้อดีการทำ normailize (ลดความซ้ำซ้อน แต่หลายครั้งเพิ่มความซับซ้อนนะ - สังเกตุ ซ้ำซ้อน กับ ซับซ้อน ไม่เหมือนกันนะ)จุดประสงค์เหมือนประโยคด้านบน คือเน้นเรื่อง integrity


ก็ได้เวลามาเข้าเรื่อง ภาษา SQL จริงๆกันเสียที   :30: :30: :30:
Cheer............... go go
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 06 ก.ค. 2006, 18:25 น.
เอ จากประสบกาม ฐานข้อมูลมันเล็กลง ครึ่งต่อครึ่งเลยจริงๆนะจ๊ะ

เดี๊ยวพรุ่งนี้ อยู่บริษัท จะเอารูปมาแปะให้ดู  :05:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 06 ก.ค. 2006, 22:44 น.
อ้างคำพูดจาก: ถลอก เมื่อ 06 ก.ค. 2006, 18:25 น.
เอ จากประสบกาม ฐานข้อมูลมันเล็กลง ครึ่งต่อครึ่งเลยจริงๆนะจ๊ะ

เดี๊ยวพรุ่งนี้ อยู่บริษัท จะเอารูปมาแปะให้ดู  :05:

อาจเพราะซ้ำซ้อนเยอะ แต่ไม่ถือว่าผิดหรือถูกครับ
normalize จะทำแยก tables ออกจากกันอยู่บ่อยๆ(ถ้าทำแบบ master-detail/1 to many) จะทราบข้อนี้ดี
การแยก tables ทำให้จำนวน field มากขึ้น เช่นรวมกันมีทั้ง 20 (data) fields แต่พอแยกกันจะมี fields มากขึ้น(มี master key,foriegn key เพิ่มขึ้นมา) ทำให้จำนวนจะมากกว่า 20 fields

แต่ถ้าข้อมูลที่ซ้ำซ้อนกันจะทำให้จำวน field ลดลง เช่นมีข้อมูลเดียวกันแต่อยู่คนละ table (ทำให้ฐานข้อมูล มีข้อมูลซ้ำกัน ทำให้ฐานข้อมูลใหญ่เกิน พอทำ normalize 1-2 จะทำให้เล็กลง) ซึ่งเป็นกฎหนึ่งในการ nomalize ซึ่งที่บอกมาถูกต้องนะครับ- อันนี้ไม่รวมกับลดขนาดของแต่ละ field และปรับเป็น memo/blob field นะ(ซึ่งปกติจะทำให้ database เล็กลง,สำหรับ mem/blob จะมีขนาดใหญ่ขึ้นเร็วเมื่อมีข้อมูล แต่ปกติถ้าไม่มีข้อมูลในฐานหลักจะเก็บตัวชี้เท่านั้น[ไม่ได้เก็บข้อมูล..ขึ้นอยู่กับชนิดของ DBMS) สรุป ถ้าข้อมูลไม่ซ้ำซ้อน(รวมซับซ้อน)ถ้า normailize ได้ดีจะมี key fields เพิ่มขึ้น..แต่อย่า serious เลยครับเพราะการทำ normalize จะทำฐานข้อมูลทีมีข้อมูลซ้ำกัน(อาจมีข้อมูลเดียว 2-3 ที่) จะทำให้ขนาดเล็กลง(มักจะเจอกับฐานข้อมูลขนาดใหญ่ๆและทำมาแยกๆกัน แล้วจับมารวมกันภายหลังจะเกิดทำให้ฐานข้อมูลเล็กลง)..

ไม่ผิดไม่ถูกหรอกครับ เพียงแต่ไม่อยากให้ฟันธงเท่านั้นเอง ...ซึ่งจะทำให้เถียงกันไม่จบ(เหมือนมองตระเกียงที่แต่ละด้านมีกระจกสี คนละสี)  :43:
แลกเปลี่ยนกันครับ...
แต่อย่าพึ่งหยุดนะครับ เพราะหลายๆคนรออยู่ .. สู้ๆ Cheer....
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Ah! เมื่อ 06 ก.ค. 2006, 22:51 น.
 :09:

เอาพื้นฐานก่อนสิครับ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 06 ก.ค. 2006, 22:55 น.
อ้างคำพูดจาก: ภูกระดึง เมื่อ 06 ก.ค. 2006, 22:51 น.
:09:

เอาพื้นฐานก่อนสิครับ


ฮิ ฮิ นั้นแหละ...
ต่อเลย น้องถลอก ...

เอาว่าประเด็นผมขอหยุดไว้ก่อนนะ นะ.. เพราะไม่งั้นความตั้งใจอาจไม่จบ..ถ้าแจมๆนิดๆก็ขออภัยด้วย ถ้าใครอยากอ่านไหลลื่นข้ามของผมไปก่อนนะครับ..

Cheer
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: โต เมื่อ 11 ก.ค. 2006, 23:35 น.
 :05: :05: :05: :05: :05:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 18 ก.ค. 2006, 14:28 น.
ลืมจู๋นี้ไปเลย  :43:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 18 ก.ค. 2006, 18:11 น.
เย้ กลับมาแล้ว หลายคนรอคอยอยู่ ..
ส่วนผมไม่กวนแหละ..
CHEER....................
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ✖ S U R A L I S M ✖ เมื่อ 17 ส.ค. 2006, 17:20 น.
จะทำ app ทีไร มักมาตายตรง ดาต้าเบส นี่แหละครับ  :38:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 18 ส.ค. 2006, 21:53 น.
ถลอกเล่นเกมจนลืมไปแล้วมั้ง  :42:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: อู๋ เมื่อ 06 ต.ค. 2006, 10:52 น.
ตั้งโจทย์ให้คิดเล่นๆ
สมมติให้มี db ข่าว ให้แสดงข่าวแต่ละหัวข้อโดยตามเวลาที่กำหนด เช่น ข่าวหมีโหดแสดงตั้งแต่วันที่ 5 ตุลา ถึง 7 ตุลา
เหมือนง่าย :43:


ถามหน่อยมีใครเคย relate ข้าม database บ้างรึเปล่า หมายถึง server database คนละตัวเลยนะ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: โตน เมื่อ 26 ต.ค. 2006, 16:41 น.
ตกลงเค้าไม่สอนกันแล้วเหรอ :25:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: sacrement เมื่อ 26 ต.ค. 2006, 23:37 น.
อ้างคำพูดจาก: ถลอก เมื่อ 06 ก.ค. 2006, 15:02 น.

Select ชื่อกอลั่ม1, ชื่อกอลั่ม2, ชื่อกอลั่ม3 From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)

ขอเสริมนิดนะครับ

ถ้าต้องการ select ทุกคอลัม ใช้ * ครับ เช่น

Select * From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 16 พ.ย. 2006, 16:27 น.
อ้างคำพูดจาก: kitty-ไอ้หมีอ้วน* เมื่อ 06 ต.ค. 2006, 10:52 น.
ตั้งโจทย์ให้คิดเล่นๆ
สมมติให้มี db ข่าว ให้แสดงข่าวแต่ละหัวข้อโดยตามเวลาที่กำหนด เช่น ข่าวหมีโหดแสดงตั้งแต่วันที่ 5 ตุลา ถึง 7 ตุลา
เหมือนง่าย :43:


ถามหน่อยมีใครเคย relate ข้าม database บ้างรึเปล่า หมายถึง server database คนละตัวเลยนะ

เคยครับ



ปล. ลืมจู๋นี้ไปเลย  :44:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: today เมื่อ 16 พ.ย. 2006, 16:38 น.
กระ๋จู๋มีสาระ ต่อเลยครับ
จะได้เอาไปใช้ในการเรียน

ติดตามมานาน แต่ไม่มีอะไรเคลื่อนไหว  :12:

ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: KoRn~* เมื่อ 17 พ.ย. 2006, 11:29 น.
ท่านผู้รู้ไปไหนละค้าบ

กระผมรออ่านอยู่........ค้าบ จะเอาไปใช้เรียน    :01:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: today เมื่อ 03 ธ.ค. 2006, 13:19 น.
ใน mysql ผมจะใส่ ค่าเป็นเวลา จะ set datatype เป็นอะไรครับ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: B o o k เมื่อ 03 ธ.ค. 2006, 13:44 น.
ขอยาดลงชื่อไว้ก่อน จะได้ตามอ่านง่ายๆ
(ลอกลุงชาย) จู๋ดีมีสาระค่ะ :12:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: X11 เมื่อ 04 ธ.ค. 2006, 23:14 น.
อ้างคำพูดจาก: auytoday เมื่อ 03 ธ.ค. 2006, 13:19 น.
ใน mysql ผมจะใส่ ค่าเป็นเวลา จะ set datatype เป็นอะไรครับ

ถ้าเอาแบบอ่านง่ายๆ ก็ date, ไม่ก็ datetime
ถ้าจะเอามาคำนวน ก่อนจะเก็บเป็นเวลาให้แปลงเป็น timestamp แล้วเก็บเป็น int ได้
เอามาบวกลบเช่นปกติ ได้เวลาเป็นจำนวนวินาที
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 06 ม.ค. 2007, 14:40 น.



เรียกร้องให้สอนต่อค่ะ กำลังหาสาระใส่ตัว
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 06 ม.ค. 2007, 14:45 น.
เฟิร์น  :25:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 06 ม.ค. 2007, 14:50 น.




คะ  :09:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: โตน เมื่อ 08 ม.ค. 2007, 14:12 น.
 :25: กระจู๋นี้หายไปนาน
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 08 ม.ค. 2007, 14:14 น.
 :26: เริ่มตรงไหนดีหว่า ลืมไปหมดแล้ว

เอา sql ล้วนๆเลยได้ไหมอ่ะ

ไม่พูดถึงเรื่องดาต้าเบสนะ


อันนี้ภาพดาต้าเบสตัวอย่างนะครับ ดูกันไปก่อน

(http://img2.f0nt.com/08/0a92303ffa0861e1d86100e96cd36563.gif)

(http://img2.f0nt.com/08/b7b1040c1ab034f3c4e75e7a4eb83b09.jpg)
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 08 ม.ค. 2007, 14:59 น.


วันที่ๆ ๆ  :25b:

มีเทคนิคอะไรมั้งฮะๆ 
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 08 ม.ค. 2007, 16:07 น.
รูปแบบ วิธี ดึงข้อมูล ก็อย่างที่เคยบอกไปแล้วนะครับ

select filed from table where เงื่อนไข  order by  field asc , desc


รูปแบบหลักที่จำเป็นต้องมีคือ

select filed from table

เพราะเราต้อง บอกว่า เราต้องการข้อมูลอะไรบ้าง และก็ ข้อมูลที่ต้องการนั่น มาจากไหน

อยู่ดีๆ จะไปบอกเงื่อนไข หรือ ให้เรียงลำดับ เลย มันก็คงจะแปลกๆอยู่


สมมติว่า ถ้าเราต้องการข้อมูลทั้งหมด จาก table user ที่เห็น

ก็จะเขียนได้แบบนี้


select * from m_user

* ใช้ เวลาเราต้องการเรียกข้อมูลทั้งหมด แบบไม่เลือกว่าจะเอาฟิล์ดอะไรบ้างครับ

ทำแบบนี้ ข้อมูล ก็จะ ออกมาทั้งหมด แบบนี้

(http://img2.f0nt.com/08/0a92303ffa0861e1d86100e96cd36563.gif)


แต่ ถ้าเราต้องการแค่ ชื่อ กับ เบอร์โทร เราก็เขียนแบบนี้ครับ

select [name] , [tel] from m_user

ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 08 ม.ค. 2007, 16:13 น.
เงื่อนไข

ถ้าเราเรียก ชื่อ กับเบอร์โทรมาแล้ว

select [name] , [tel] from m_user

แล้วเราต้องการ เฉพาะ คนที่มีเบอร์โทร 7820

เราก็ใส่เงื่อนไข แบบนี้ครับ

select [name] , [tel] from m_user where tel = 7820

หรือ ต้องการ เฉพาะคนชื่อ cccc ก็แบบนี้ครับ

select [name] , [tel] from m_user where [name] = 'cccc'

ถ้าต้องการเฉพาะคนที่เกิดวันที่ 1/1/1981 ก็แบบนี้ครับ

select [name] , [tel] from m_user where birthdate= #1/1/2981#


ลองดูดีๆ นะครับ ข้อมูลประเภท text และ date เวลาใส่เงื่อนไข จะมี ' และ # มาด้วย


อันนี้สำคัญมากครับ อย่าลืมใส่


เวลาใส่เงื่อนไข เราใส่ and กับ or ได้ด้วยนะครับ แบบนี้


ถ้าไม่ใส่จะเน่าครับ

select [name] , [tel] from m_user where birthdate= #1/1/1981#  and  [name] = 'พิเชษฐ รุ่งเรืองพานิช'


จะหมายถึง ดึงข้อมูล ชื่อ เบอร์โทร ของคนที่เกิดวันที่  1/1/1981 และ ชื่อ 'พิเชษฐ รุ่งเรืองพานิช'

ครับ


เวลาดึงพวกวันที่ หรือ ตัวเลข เราสามารถ กำหนด เป็นช่วงได้ด้วยนะครับ

โดยการใช้ between

เช่น จะดึง คนที่เกิดในช่วงวันที่ 1/1/2000 ถึง 1/12/2000

ก็เขียนแบบนี้ครับ

select usernam where birthdate between #1/1/2000# and #1/12/2000#


ส่วนการค้นหา แบบตัวหนังสือ เราค้นเฉพาะบางส่วนของคำ ก็ได้ เช่น

หาคนที่ ชื่อ มีคำว่า เชษ ผสมอยู่ เราใช้คำสั่ง like ครับ

select usernam where [name] like '*เชษ*'

สังเกตุว่ามีเครื่องหมาย * นะครับ

* หมายถึง อะไรก็ได้ครับ

เช่นถ้า จะให้หา ชื่อที่ขึ้นต้นด้วยคำว่า พิ ก็ ใส่ว่า 'พิ*'

หรือ หาให้ลงท้ายด้วยคำว่า  กกก ก็ใส่ว่า '*กกก'






เดี๊ยวมาต่อครับ

ปล. เขียนแบบด้นสดๆ ใครเจออะไรผิด บอกด้วยครับ ขอบคุณครับ  :44:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: iannnnn เมื่อ 08 ม.ค. 2007, 18:26 น.
(+2) แล้วรออ่านต่อครับ


ป.ล.ไอ้เชษนี่ ใครนะ :26:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: เทอร์โบบูสเตอร์ เมื่อ 09 ม.ค. 2007, 15:38 น.
ต่อครับ เรื่อง เวลาดึงมา แล้วให้มันเรียงลำดับ

อันนี้ง่ายๆครับ


เอา Order By มา ต่อไว้หลังสุด ตามด้วย ชื่อฟิล์ดที่ต้องการเรียงลำดับ  จากนั้น บอกด้วยว่า จะให้เรียง จากมากไปน้อย หรือน้อยไปมาก โดยการใส่ asc (น้อยไปมาก) หรือ Desc (มากไปน้อย)


เช่น จะเรียงว่า ใครเกิดคนแรกสุด ก็


select [name] from M_user order by birthdate asc

ใคร เกิดหลังสุด ก็

select [name] from M_user order by birthdate desc


ถ้าจะเรียงหลายอย่าง ให้ใช้ , คั่นครับ

เช่น

ให้เรียงก่อนว่า ใครเกิดก่อน เกิดหลัง จากนั้น ให้เรียงชื่อ ตามตัวอักษร ก็

select [name] from M_user order by birthdate asc ,  name asc


อ่อ

ถ้าเราจะเรียงจากน้อยไปมาก ไม่ต้องใส่ asc ก็ได้นะครับ

มันจะเรียงน้อยไปมากให้อัตโนมัติอยู่แล้ว

select [name] from M_user order by birthdate  , name  





วันนี้ขอสั้นๆนะ งานยุ่ง พรุ่งนี้ ต่อ เรื่อง เรียกข้อมูลแบบจับกลุ่ม (Group By) เรียกข้อมูลแบบ มากสุด(max) เรียกข้อมูลน้อยสุด(min) และอีกมากมายต่อครับ


เดี๊ยวผมทำตัวดาต้าเบสให้ตัวหนึง แล้ว เอามาลองทำตามกันดีกว่านะครับ

เอา access97 ละกัน โปรแกรมสามัญประจำบ้าน
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 11 ม.ค. 2007, 12:14 น.


สงสัยครับ สงสัย

เอกำลังทำโปรแกรมที่เอาไปรันที่ไหนก็ได้ (เฉพาะในวินโดวส์  :02: )

โดยกะว่าจะใช้ฐานข้อมุล access นะครับ (เพราะคิดว่าคงเอาไปรันที่ไหนก็ได้)

อยากรู้ว่า ถ้าเอาไปรันในเครื่องที่ไม่มี Access เนี้ยจะรันได้มั้ยครับ

เขียนโดย VB.NET นะครับ โดยที่โปรแกรมเอจะมี ไฟล์ .mdb อยุ่ในตัวเลยนะครับ

หรือว่ามีวิธีไหนเด็ดดวงๆ ก็บอกมาได้เลยนะครับ  :25b:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: อู๋ เมื่อ 11 ม.ค. 2007, 14:33 น.
ตอบ ไม่ได้ครับต้องลง access ด้วย เคยลองมาแล้ว :31:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: icez เมื่อ 11 ม.ค. 2007, 18:47 น.
vb6 ทำได้นะครับ
ใช้ object oledb เอา
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 11 ม.ค. 2007, 20:27 น.
อ้างคำพูดจาก: icez เมื่อ 11 ม.ค. 2007, 18:47 น.
vb6 ทำได้นะครับ
ใช้ object oledb เอา

vb.net ก็มี oledb นินา  :09:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 12 ม.ค. 2007, 00:57 น.
อ้างคำพูดจาก: ถลอก เมื่อ 08 ม.ค. 2007, 16:07 น.

select [name] , [tel] from m_user



ขอเสริม
ตรง field name ไม่จำเป็นต้องใส่ [...] ยกเว้นแต่ field name นั้นมีช่องว่างระหว่างชื่อ เช่น field name ชื่อ first name เราจะเขียนเป็น [first name] แต่ถ้าตั้งเป็น FirstName ก็ไม่ต้องใส่ครับ
note: เพื่อกันงง คนที่ติดตามข้ามของผมไปก่อนได้เลยครับ เดี๋ยวจะไม่ต่อเนื่อง
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 12 ม.ค. 2007, 01:02 น.
อ้างคำพูดจาก: ถลอก เมื่อ 08 ม.ค. 2007, 16:13 น.

select [name] , [tel] from m_user where birthdate= #1/1/2981#


ลองดูดีๆ นะครับ ข้อมูลประเภท text และ date เวลาใส่เงื่อนไข จะมี ' และ # มาด้วย


อันนี้สำคัญมากครับ อย่าลืมใส่


ขอเสริม เครื่องหมาย # นำหน้าข้อมูลประเภท DateTime ใช้ใน MS Access ในฐานข้อมูลอื่นจะใช้ '.....' เหมือน text field ธรรมดา แต่ DBMS จะรู้เองว่าต้องเก็บเป็น DateTime ตาม Field Type ของ Field นั้น
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 12 ม.ค. 2007, 01:08 น.
อ้างคำพูดจาก: ^-FakE-^ เมื่อ 11 ม.ค. 2007, 12:14 น.

สงสัยครับ สงสัย

เอกำลังทำโปรแกรมที่เอาไปรันที่ไหนก็ได้ (เฉพาะในวินโดวส์  :02: )

โดยกะว่าจะใช้ฐานข้อมุล access นะครับ (เพราะคิดว่าคงเอาไปรันที่ไหนก็ได้)

อยากรู้ว่า ถ้าเอาไปรันในเครื่องที่ไม่มี Access เนี้ยจะรันได้มั้ยครับ

เขียนโดย VB.NET นะครับ โดยที่โปรแกรมเอจะมี ไฟล์ .mdb อยุ่ในตัวเลยนะครับ

หรือว่ามีวิธีไหนเด็ดดวงๆ ก็บอกมาได้เลยนะครับ  :25b:


ต้องลง OleDB JetEngine ครับ แค่นั้นก็ใช่ได้( download ที web Microsoft)
ถ้าง่ายก็อย่างที่คนที่บอกว่าลองมาแล้วไม่ได้ คือลงทั้งตัว(ถ้าไม่ใช้ Acess ก็ไม่แนะนำครับ)
ลองใช้ InstallShield ดูครับ มันจะเพิ่มตัว Database Driver(OLEDB Jet Database) ให้เองครับ
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 12 ม.ค. 2007, 01:11 น.
อ้างคำพูดจาก: ThaiBuddy เมื่อ 12 ม.ค. 2007, 01:08 น.
ต้องลง OleDB JetEngine ครับ แค่นั้นก็ใช่ได้( download ที web Microsoft)
ถ้าง่ายก็อย่างที่คนที่บอกว่าลองมาแล้วไม่ได้ คือลงทั้งตัว(ถ้าไม่ใช้ Acess ก็ไม่แนะนำครับ)
ลองใช้ InstallShield ดูครับ มันจะเพิ่มตัว Database Driver(OLEDB Jet Database) ให้เองครับ


:25b: ขอบคุณครับ จะเอาไปลอง

แต่ vs2005 กับ 2003 ต่างกันเยอะเหมือนกันนะนี้ หาtools ไม่ค่อยเจอเลย เปลี่ยนชื่อซะงั้น  :08:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ลุงซัน เมื่อ 12 ม.ค. 2007, 02:16 น.
อ้างคำพูดจาก: ^-FakE-^ เมื่อ 12 ม.ค. 2007, 01:11 น.

:25b: ขอบคุณครับ จะเอาไปลอง

แต่ vs2005 กับ 2003 ต่างกันเยอะเหมือนกันนะนี้ หาtools ไม่ค่อยเจอเลย เปลี่ยนชื่อซะงั้น  :08:
รอ 2007 คงงงเข้าไปใหญ่(ผมเดาจาก office 2007 หาอะไรก็ไม่ค่อยเจอ งงไปหมด)
ที่ promote กันใหญ่ก็ Language Integrated Query (LINQ) http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx
ออก Technical Preview แล้ว http://www.microsoft.com/downloads/details.aspx?familyid=1e902c21-340c-4d13-9f04-70eb5e3dceea&displaylang=en
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 08 ต.ค. 2007, 18:09 น.


ยังไม่ไปถึงไหนเลย  :05:

มาสอนสิคะ  :05:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 08 ต.ค. 2007, 20:00 น.
ถลอกเอาแต่เล่นเกม  :47:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 17 ต.ค. 2007, 23:35 น.


พรุ่งนี้จะมาแปะนะ  :25:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ÐзέρŞήợẅŜ เมื่อ 16 พ.ย. 2007, 23:07 น.
รออ่านด้วยคนครับ :01:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 17 พ.ย. 2007, 03:13 น.


ลืมไปแล้วว่าจะเอาอะไรมาแปะ  :31:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 17 พ.ย. 2007, 03:32 น.



โห่  :07:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 17 พ.ย. 2007, 03:37 น.

งั้นสอนสดๆ เลย ละกัน

ถ้าบางทีเราจะ query data บางส่วนของคำนั้นๆ เช่น

id    |     data
1     |     hello
2     |     love
3     |     Jubz


เราอยากรู้ว่าคำที่มีตัว e อยู่ใน data มีกี่อัน

เราจะ query ดังนี้

select *
from tableName
where data LIKE '%e%'

จบครับ  :46:

ปล. ข้อควรระวังจะด้วย
ถ้าเรารับ parameter มาจากภายนอกจะต้องเขียนดังนี้

select *
from tableName
where data LIKE '%' + @query_parameter  + '%'

:31:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 17 พ.ย. 2007, 04:01 น.
อ้างคำพูดจาก: ซ้อซั้ว เมื่อ 17 พ.ย. 2007, 03:37 น.
เราอยากรู้ว่าคำที่มีตัว e อยู่ใน data มีกี่อัน


มีกี่คำ  :09: รึแสดงเป็นจำนวนตัวอี




สัญลักษณ์

เหมือนเวลาเสิร์ชในดอสใช้ ? แทนตัวที่เป็นอะไรก็ได้ในตำแหน่งนั้นๆที่ไม่ได้ fix
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 17 พ.ย. 2007, 04:11 น.


กี่ Row อะเฟิร์น 

ประมาณนั้น เลยเรื่องสัญลักษณ์  :12:
ชื่อเรื่อง: Re: ภาษา SQL
โพสต์โดย: โตน เมื่อ 20 พ.ย. 2007, 14:13 น.

เรียนด้วย :25:
ชื่อเรื่อง: ตอบ: Re: ภาษา SQL
โพสต์โดย: กวางจ้ะ เมื่อ 22 ม.ค. 2008, 11:31 น.
อ้างคำพูดจาก: คุณเอ เมื่อ 17 พ.ย. 2007, 03:37 น.
งั้นสอนสดๆ เลย ละกัน

ถ้าบางทีเราจะ query data บางส่วนของคำนั้นๆ เช่น

id    |     data
1     |     hello
2     |     love
3     |     Jubz


เราอยากรู้ว่าคำที่มีตัว e อยู่ใน data มีกี่อัน

เราจะ query ดังนี้

select *
from tableName
where data LIKE '%e%'

จบครับ  :46:

ปล. ข้อควรระวังจะด้วย
ถ้าเรารับ parameter มาจากภายนอกจะต้องเขียนดังนี้

select *
from tableName
where data LIKE '%' + @query_parameter  + '%'

:31:
ขอเสริมจากคุณเอจ้า..

วิธี apply นะคะ
ก็ เอาไปใช้ในการ search หาได้
เช่น สมมติว่าเรามีข้อมูลชื่อลูกค้าอยู่ใน database ทีนี้เราจะหาข้อมูลลูกค้าคนนึง
จำได้คลับคล้ายคลับคลาว่าขึ้นต้นด้วย "สม"
เราก็ค้นแบบนี้นะคะ

"select * from tablename where fieldname like 'สม%'";

ก็จะแสดงชื่อคนที่ขึ้นต้นด้วยคำว่า "สม" นะคะ
ฉะนั้นตัวอย่างนี้ ถ้าเกิดดันมีคนชื่อที่ประกอบด้วยคำว่า "สม" อยู่ในชื่อ แต่ไม่ได้ขึ้นต้นด้วยคำว่า "สม" ก็จะไม่แสดงค่ะ
จากตัวอย่าง % ก็จะแทนด้วยคำว่าใด ๆ หรืออื่น ๆ ที่เรานึกไม่ออก

เอาไปดัดแปลงอีกอย่างหนึ่งสำหรับคนที่ต้องการหาช่วงเวลา
แล้วดันตั้ง doctype เป็น varchar หรือ char ก็สามารถเอา % ไป apply ใช้ได้เช่นกันค่ะ
(สำหรับคนที่ไม่ได้ set เป็น timestamp, date, datetime)

ตัวอย่าง อยากได้รายชื่อคนที่เกิดในช่วงเดือน มกราคม - กันยายน ปีไหนหรือวันที่ไหนก็ได้

1. สังเกตในฐานข้อมูลของตัวเองก่อนว่า เขาเก็บข้อมูลไว้รูปแบบไหน
เช่น บางทีเก็บวันเดือนปีเป็น ปี-เดือน-วัน หรือบางที่ก็เก็บเป็น ปี-วัน-เดือน
อาจจะใช้เครื่องหมาย : แทน - หรือใช้เลขกี่หลักในการแทนวันเดือนปี ใช้ปีค.ศ. หรือปี พ.ศ. ก็ต้องสังเกตดี ๆ นะคะ

2. เมื่อทราบรูปแบบแล้วก็ให้ลองเขียนคำสั่งค้นหาค่ะ
(สมมติตัวอย่างข้อมูลใน database เก็บเป็น 1993-01-22)
อย่างโจทย์บอกว่า อยากได้คนเกิดช่วงเดือนมกราคม - มีนาคม ก็ต้องเป็น เดือน 01 ถึง 03

คำสั่งก็จะเป็น >> "select * from tablename where birthday like '%-01-%' or birthday like '%-02-%' or birthday like '%-03-%'";

แปลคำสั่ง
select แปลว่า เลือก
* แปลว่า ทุก ๆ field
from แปลว่า จาก
tablename แปลว่า ชื่อตารางที่เราต้องการให้เลือก
where แปลว่า ตามเงื่อนไขที่
birthday แปลว่า ชื่อ field ที่เก็บข้อมูลวันเกิดไว้
like แปลว่า เหมือนหรือคล้าย
'%-01-%' แปลว่า คนที่เกิดเดือน 01 คือเดือนมกราคม ปีไหน วันที่เท่าไหร่ก็ได้
or แปลว่า หรือ
'%-02-%' แปลว่า คนที่เกิดเดือน 02 คือเดือนกุมภาพันธ์ ปีไหน วันที่เท่าไหร่ก็ได้
or แปลว่า หรือ
'%-03-%' แปลว่า คนที่เกิดเดือน 03 คือเดือนมีนาคม ปีไหน วันที่เท่าไหร่ก็ได้

ก็จะแสดงรายชื่อคนที่เกิดตั้งแต่เดือนมกราคม - มีนาคมให้ดูจ้า


ส่วนใครที่โชคดี set doctype เป็น date หรือ datetime ก็แค่ใส่
"select * from tablename where birthday between '%-01-01%' ... '%-03-31%'";
แปลค่ะ
between แปลว่า ระหว่าง
'%-01-01' แปลว่า ระยะเวลาเริ่มหา ปีใด ๆ ก็ได้ เดือน 1 วันที่ 1
... ไม่แน่ใจว่าใช้คำนี้ หรือใช้คำว่า to หรือ , หรือ and กันแน่ ใครลองคำสั่งนี้แล้วได้ผลยังไงมาแจ้งด้วยนะคะ
'%-03-31' แปลว่า ระยะเวลาสิ้นสุดที่จะหา คือ ปีใด ๆ ก็ได้ เืดือน 3 วันที่ 31
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 03 มี.ค. 2008, 01:02 น.


อ่า  :04:

วันนี้จะมาสอนเรื่อง pagination ครับ pagination แปลว่าการแบ่งหน้า เผื่อเอาไป google อย่างอื่นต่อในภายภาคหน้า

สงัสยรึเปล่าครับ ว่าเราจะแบ่งหน้ายังไง ต้องการแสดงข้อมูลนี้ทีละ สามชิ้นต่อหน้าอะไรประมาณนี้

สำหรับแฟนๆ Visual Studio คงไม่ประสบปัญหาเหล่านี้ เพราะเพียงคลิกเดียวก็จบ  :07:

เอาละครับเข้าเรื่อง คำสั่งวันนี้คือ Limit ครับ


อ้างอิงSELECT * FROM `your_table` LIMIT 0, 10

เลขตัวหน้าคือจุดตั้งต้น   เลขตัวหลังคือจะแสดงกี่ rows จากจุดตั้งต้น

เพราะฉะนั้นจะแปลได้ว่า แสดง สิบข้อมูลแรก จากการ query ด้วยคำสั่งนี้  SELECT * FROM `your_table`

การเอาไปใช้จริงๆ คือ

การเซท ค่าสองค่าในหน้าเว็บ คือ
- เลขหน้า (page)
- จำนวนที่จะแสดงต่อหน้า (items per page)

โดยเขียน sql รอไว้ดังนี้ " LIMIT (page*items per page), (items per page)  "

แล้วเอาไปแปะต่อท้าย คำสั่งที่เราจะ query ครับ

ส่วนการเขียนโค๊ดอื่นๆ นอกเหนือจาก sql ลาก่อนครับ  :39:

แต่ google เอาก็จะเจอโค๊ด นะครับ หวังว่าจะเป็นประโยชน์บ้าง จุ๊บๆ  :27:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 03 มี.ค. 2008, 02:09 น.
แปะครับ
ตามมาอ่านเรื่อยๆนะ  :27:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: unowen เมื่อ 11 มี.ค. 2008, 18:24 น.
อ้างคำพูดจาก: คุณเอ เมื่อ 03 มี.ค. 2008, 01:02 น.
วันนี้จะมาสอนเรื่อง pagination ครับ pagination แปลว่าการแบ่งหน้า เผื่อเอาไป google อย่างอื่นต่อในภายภาคหน้า

:27:  เท่าที่รู้ LIMIT ไม่ใช่ standard SQL นี่ครับ
แนะนำ pagination ของ DBMS อื่นq และแบบที่ใช้เป็นสากลได้ทุก DBMS ด้วยสิครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 11 มี.ค. 2008, 18:35 น.


รู้แค่นี้ละครับ  :52:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: เบียร์ เมื่อ 11 มี.ค. 2008, 18:41 น.
อ้างคำพูดจาก: unowen เมื่อ 11 มี.ค. 2008, 18:24 น.
:27:  เท่าที่รู้ LIMIT ไม่ใช่ standard SQL นี่ครับ
แนะนำ pagination ของ DBMS อื่นq และแบบที่ใช้เป็นสากลได้ทุก DBMS ด้วยสิครับ

ลองดูนี่ครับ http://www.codenone.com/node/698

เห็นเค้ากำลังคุยกันเรื่องนี้เหมือนกัน :27:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: unowen เมื่อ 11 มี.ค. 2008, 18:55 น.
อ้างคำพูดจาก: iNfected เมื่อ 11 มี.ค. 2008, 18:41 น.
ลองดูนี่ครับ http://www.codenone.com/node/698

เห็นเค้ากำลังคุยกันเรื่องนี้เหมือนกัน :27:

อ้างอิงตัวอย่างในการใช้ Limit แบบ ของ MSSOL (เฉพาะ MSSQL 2005)

WITH Salesman as(
SELECT c.FirstName, c.LastName, ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number', s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s JOIN Person.Contact c on s.SalesPersonID = c.ContactID
JOIN Person.Address a ON a.AddressID = c.ContactID)
SELECT FirstName, LastName SalesYID, PostalCode
FROM Salesman
WHERE [Row Number] Between 1 and 10000 ---- Limit x, y

:27: ขอบคุณครับ  :46:
อ่านแล้วมึนๆแฮะ  คล้ายๆกับ subquery ใน oracle
แต่ใช้ built-in function คนละตัว  :09:
แล้วไอ้ ROW_NUMBER() OVER(ORDER BY SalesYTD DESC) AS 'Row Number' นี่คือการสร้าง sorting index หรือครับ  :09:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 11 มี.ค. 2008, 20:18 น.
ถามครับ สมมุติมีฐานข้อมูลประชากรที่มีโครงสร้างดังนี้

tbl_country (ตารางประเทศ)
- country_id
- country_name
- country_description

tbl_state(ตารางจังหวัด)
- state_id
- state_name
- state_description
- country_id (มีไว้เพื่อบอกว่าจังหวัดนี้เป็นของประเทศอะไร)

tbl_area(ตารางเขต)
- area_id
- area_name
- area_description
- area_male_population (ตัวเลขจำนวนประชากรชาย)
- area_female_population (ตัวเลขจำนวนประชากรหญิง)
- state_id (มีเพื่อบอกว่าเขตนี้เป็นของจังหวัดอะไร)

สมมุติรับ input จาก form มาเป็นเลข country_id แล้วอยากให้ query ออกมาเป็นจำนวนประชากรทั้งหมดของประเทศที่มี country_id นั้น จะต้องใช้คำสั่ง sql ยังไงเหรอครับ

(อันนี้ใน mySQL นะ)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 11 มี.ค. 2008, 20:27 น.
SELECT SUM(area_male_population) + SUM(area_female_population) AS population
FROM tbl_area WHERE state_id IN (
SELECT state_id FROM tbl_state WHERE country_id IN (
SELECT country_id FROM tbl_coutry WHERE country_id = xxx
));


ประมาณนี้ครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 11 มี.ค. 2008, 20:41 น.
หูย สุดยอดด ขอบคุณ icez มากครับ  :46:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: X11 เมื่อ 11 มี.ค. 2008, 22:46 น.
อ้างคำพูดจาก: icez เมื่อ 11 มี.ค. 2008, 20:27 น.
SELECT SUM(area_male_population) + SUM(area_female_population) AS population
FROM tbl_area WHERE state_id IN (
SELECT state_id FROM tbl_state WHERE country_id IN (
SELECT country_id FROM tbl_coutry WHERE country_id = xxx
));


ประมาณนี้ครับ

แบบนี้เรียกได้เร็วกว่า join ไหม
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 11 มี.ค. 2008, 23:39 น.
select sum(a.area_male_population) + sum(a.area_female_population)
from tbl_country c,tbl_state s,tbl_area a
where a.state_id = s.state_id
and s.country_id = c.country_id
and c.country_id = xxx

ได้ผลเหมือนกัน
select หลายทีมันช้ากว่ามั๊ย แต่ไม่น่าจะมากเท่าไหร่
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 12 มี.ค. 2008, 00:25 น.
ยังไงรบกวนช่วยอธิบาย code ของ icez กับ โต ด้วยได้หรือเปล่าครับ
คือความรู้เรื่อง sql ผมมันอ่อนด๋อยมากอ่ะ อยากรู้เรื่องมั่ง
ลองไปหาอ่านในเว็บ mysql.org (ซึ่งอ่านยากพอๆกับ help ของ flash  :05:) ก็ยังไม่เข้าใจว่า AS กับ IN() มันทำอะไรได้ แล้ววิธีของโตที่มี a. , s. พวกนี้คืออะไีรเหรอครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 12 มี.ค. 2008, 00:29 น.

ตัว a s c ของโต ดูที่ตอนเรียก FROM ครับ เหมือนเป็นการสร้างชื่อเพื่อแทนค่าใน table นั้นๆ เพื่อป้องกันการเรียกซ้ำซ้อนครับ

เดี๋ยวขอลองคิดดูแป๊บนึงพึ่งเปิดคอม  :12:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 12 มี.ค. 2008, 00:37 น.
a. , s. พวกนี้เนี่ยแทนค่าจากตารางมาเป็นตัวย่อน่ะครับ จะได้อ้างถึงง่ายๆ
ย่อโดยเอาชื่อตารางแล้ววรรค1ทีตามด้วยชื่อที่อยากให้เป็น



select sum(a.area_male_population) + sum(a.area_female_population) เลือกค่าซัมมา+กัน
from tbl_country c,tbl_state s,tbl_area a 
จากตาราง
tbl_country ย่อให้เป็น c
tbl_state ย่อให้เป็น  s
tbl_area ย่อให้เป้น a

where a.state_id = s.state_id
and s.country_id = c.country_id
and c.country_id = xxx

แวร์ที่ state_id ของตาราง tbl_area  ที่เท่ากันกับ state_id ของตาราง tbl_state
และ country_id ของตาราง tbl_state ที่เท่ากันกับcountry_id ของตาราง tbl_country
และ country_id ของตาราง tbl_country มีค่าเท่ากับ ประเทศที่มี country_id นั้น


อ้างคำพูดจาก: icez เมื่อ 11 มี.ค. 2008, 20:27 น.
SELECT SUM(area_male_population) + SUM(area_female_population) AS population
FROM tbl_area WHERE state_id IN (
SELECT state_id FROM tbl_state WHERE country_id IN (
SELECT country_id FROM tbl_coutry WHERE country_id = xxx
));


ประมาณนี้ครับ
ของไอซ์จะ ซีเลคหลายรอบหน่อย เป็นลำดับๆไปน่ะ

FROM tbl_area WHERE
state_id IN
(
    SELECT state_id FROM tbl_state WHERE country_id IN
         (
          SELECT country_id FROM tbl_coutry WHERE country_id = xxx
          )
);
เอา state_id ใน ตาราง  tbl_state ที่มีค่า country_id เท่ากับกับ country_id ใน tbl_coutry ซึ่ง country_id = xxx


เข้าใจแต่อธิบายไม่ถูก  :05:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 12 มี.ค. 2008, 01:01 น.
เหมือนจะเิริ่มเข้าใจแล้ว
แต่พอเปิด editplus ขึ้นมาจะเขียนเองก็พบว่ายังไม่ค่อยเข้าใจอยู่ดีครับ   :30: :05:


:46:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 12 มี.ค. 2008, 01:15 น.


:05: คิดแบบแปลกกว่านี้ไม่ออกแล้วครับ ว่าจะใช้ group by ไม่ก็ inner join แต่มันก็ sum ชาย หญิงไม่ได้

จะลองเขียน sql ให้ลองเขียนที่ mysql เลยครับ ลองใช้ tools ดู เช่น sqlyog
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 12 มี.ค. 2008, 01:23 น.
ไม่ต้องแปลกก็ได้ครับ แค่อธิบายคำว่า group by กับ inner join อะไรนี่ให้ผมฟังก็ได้บุญแล้ว 55
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 12 มี.ค. 2008, 01:28 น.
http://www.w3schools.com/sql/sql_groupby.asp

http://www.w3schools.com/sql/sql_join.asp

อธิบายไม่ถูกจริงๆ ครับ  :08:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ต้น เมื่อ 12 มี.ค. 2008, 06:07 น.
เพิ่มเติม group by กับ inner join ครับ

group by (http://www.narisa.com/forums/lofiversion/index.php?t19640.html)

inner join (http://platoosom.blogspot.com/2007/11/inner-join-sql.html)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 12 มี.ค. 2008, 06:53 น.
ทีแรกผมก็ว่าจะเขียน inner join นั่นแหละครับ
แต่เขียนๆ ไปแล้วมึน เลยใช้ sub query เอาดีกว่า


อ้างคำพูดจาก: โต เมื่อ 11 มี.ค. 2008, 23:39 น.
select sum(a.area_male_population) + sum(a.area_female_population)
from tbl_country c,tbl_state s,tbl_area a
where a.state_id = s.state_id
and s.country_id = c.country_id
and c.country_id = xxx

ได้ผลเหมือนกัน
select หลายทีมันช้ากว่ามั๊ย แต่ไม่น่าจะมากเท่าไหร่
จริงๆ ถ้าทำ index ไว้ (หรือเป็น primary key) จะเร็วมากๆ ครับ
ไม่ว่าแบบไหนก็เหอะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 12 มี.ค. 2008, 11:27 น.
ไม่รู้เรื่อง  :37:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 12 มี.ค. 2008, 11:31 น.
ไม่เห็นจะยากเลย  :33:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Rabbitinblack เมื่อ 12 มี.ค. 2008, 12:20 น.
ไม่เข้าใจอย่างรุนแรง
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 12 มี.ค. 2008, 12:39 น.


ต้นฉบับ:
SELECT SUM(area_male_population) + SUM(area_female_population) AS population
FROM tbl_area WHERE state_id IN (
SELECT state_id FROM tbl_state WHERE country_id IN (
SELECT country_id FROM tbl_coutry WHERE country_id = xxx
));

แปล: sub นรก :30:
เลือก ผลรวม(area_male_population) + ผลรวม(area_female_population) ในฐานะ population
จาก tbl_area โดยที่ state_id อยู่ใน (
เลือก state_id จาก tbl_state โดยที่ country_id อยู่ใน (
เลือก country_id จาก tbl_coutry โดยที่ country_id = xxx
));
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 12 มี.ค. 2008, 12:47 น.
 :39b:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 12 มี.ค. 2008, 13:33 น.
 :30:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ฟิ้งซ์ เมื่อ 12 มี.ค. 2008, 14:55 น.
กำลังเริ่มๆ คิดจะศึกษา
ลง appserv เล่นๆ ยังงงๆ กับ sql กับ php อีกบาน
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 12 มี.ค. 2008, 15:07 น.
ไม่ยากเลยครับ  :25:
ลงแล้ว ครีเอทดาต้าเบสมาอันนึง มีสัก2-3คอลัม
แล้วไปจับ php เรียกข้อมูลในนั้นออกมาแสดง
ถือเป้นการเริ่มต้น พอได้แล้วค่อยลองไปดูพวกโปรแกรมง่ายๆ มานั่งแกะดูโค๊ดเอา
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: i-poon เมื่อ 13 มี.ค. 2008, 20:03 น.
อ้างคำพูดจาก: icez เมื่อ 12 มี.ค. 2008, 06:53 น.
จริงๆ ถ้าทำ index ไว้ (หรือเป็น primary key) จะเร็วมากๆ ครับ
ไม่ว่าแบบไหนก็เหอะ

คืออะไรเหรอครับ  :25:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โตน เมื่อ 13 มี.ค. 2008, 20:29 น.

ถ้าแค่อ่านแล้วดู จะยากครับ

แต่ถ้าลองทำ จะง่ายครับ :12:

ลองก๊อปส่วน sql ไปรันเล่นๆเองก็ได้ครับ  แล้วค่อยๆเปลี่ยนเล่นเอาเองทีละนิดๆ :27:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: today เมื่อ 14 มี.ค. 2008, 01:15 น.
มาเก็บความรู้  ส่งความรู้คืนอาจารย์หมดตอนสอบ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ขา...จอห์น[23] เมื่อ 29 มี.ค. 2008, 10:02 น.
อ่านแล้วมึนตามครับ :28:

ปกติจะ create ใน PHPmyAdmin
ใช้แค่ insert update delete select  :42:

ส่วนฟังค์ชั่นต่างๆ ลอกหนังสือเอา

จำได้มั่ง ไม่ได้มั่ง
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 03 ส.ค. 2008, 23:16 น.
คำเตือน: กระจู๋นี้ร้างมากว่า 120 วันแล้วนะ
ตั้งสติก่อนขุดกระจู๋นะจ๊ะ   :47:



มีคำถามครับ

ถ้าทำ web app ภาษาไหนเข้าถึง mysql ได้ง่ายๆ บ้างครับ
แบบว่ามี wrapper (เขาเรียกแบบนี้รึเปล่า) หรือ function ของภาษานั้นๆ
ที่ไม่ต้องมาใช้ภาษา sql ล้วนๆ ทั้งหมด
อาจจะย่อมาแค่ชื่อ database หรือ table แล้วก็คำค้นอะไรอย่างนี้หน่ะครับ

ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กวางจ้ะ เมื่อ 03 ส.ค. 2008, 23:42 น.
เคยเห็นแต่ php เขียนเป็น function อ่ะค่ะ
ประมาณว่าให้ตัวแปรส่งค่ามาแต่ชื่อ table และก็ส่วนของเงื่อนไข
(กรณีเป็น function ที่ใช้คำสั่ง select)
ก็จะประมวลผลแล้ว return ค่าออกมาให้เป็น array หรือจะให้แสดงค่าเลยก็ได้แล้วแต่จะเขียนออกมา

แต่ละคำสั่ง sql อย่าง select, insert, update, delete
ก็ไม่ได้อยู่ใน function เดียวกันอ่ะค่ะ (พี่โอ้เอ้น่าจะเคยเห็น)
แต่ถ้าเป็นนอกเหนือจากนี้ คิดไม่ออกเหมือนกันอ่ะค่ะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: jain เมื่อ 04 ส.ค. 2008, 00:06 น.
มีตัวนึงมาแนะนำครับ
http://propel.phpdb.org (http://propel.phpdb.org)

จะเป็นลักษณะ ORM

ตัวอย่างการใช้งาน
http://propel.phpdb.org/trac/wiki/Users/Documentation/1.2/BasicCRUD (http://propel.phpdb.org/trac/wiki/Users/Documentation/1.2/BasicCRUD)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 04 ส.ค. 2008, 00:17 น.
ขอบคุณครับ ขอตามเข้าไปดูก่อน
ใครมีตัวอื่นแนะนำอีกเชิญได้ครับ   :46:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: เบียร์ เมื่อ 04 ส.ค. 2008, 00:28 น.
ถ้าของ php มีเพียบเลยครับ

อ้างอิง*  AYLOOP (http://homepage.mac.com/sbarnum/code/alyoop/)
    * Changes (http://www.sitepoint.com/forums/showthread.php?t=214183)
    * DB_DataContainer  (http://www.appelsiini.net/~tuupola/php/DBDataContainer/): DBDataContainer is a PEAR compliant database persistence layer and data encapsulation class. Based on ActiveRecord.
    * DB_DataObject (PEAR) - official PEAR page  (http://pear.php.net/package/DB_DataObject)
    * DBTable (http://wiki.ciaweb.net/yawiki/index.php?area=DBTable): DB_Table is an object-oriented interface to a database table. PEAR-compliant. Based on ActiveRecord.
    * DBDO (PECL) (http://pecl.php.net/package/DBDO): Same as DB_DataObject, except as a PHP Extension
    * Entity (http://tanus.dotgeek.org/): The Entity framework is a generic object to database mapping architecture.
    * EZPDO (http://www.ezpdo.net): Eazy PHP Data Objects, a lightweight and easy-to-use object-relational mapping and data persistence solution for PHP
    * LDO (http://www.wojciechszela.com): Lightweight Data Objects, lightweight, open, feature rich and intuitive persistence solution for PHP
    * Metastorage (http://www.meta-language.net/metastorage.html): Metastorage is an application that automatically generates code for an Object Oriented API to store, retrieve and manipulate the data objects of classes described in a high level data model definition.
    * MyObjects (http://www.myobjects.org/): MyObjects is a set of tools for class generation, database schema generation and object persistence for Php 5 and MySql.
    * phpersistence (http://www.phpersistence.org/): phpersistence is an object oriented persistence layer for php, using transparent object relational mapping.
    * PhpOpenbiz (http://www.phpopenbiz.org/) PhpOpenbiz is a metadata-driven framework that implements MVC, ORM and object persistence. It also has an Eclipse plugin to help ORM configuration.
    * PPO (PHP Persistent Object) - Changes for PHP5
    * Perdure (http://sourceforge.net/projects/perdure/): Perdure is a transparent object relational persistence and query tool for PHP.
    * Propel (http://propel.phpdb.org): Propel is a full-service object persistence and query toolkit for PHP5.
    * phpCr (http://www.phpcr.org/): php Content Repository is a collection of interfaces. It aims to provide a framework for implementing jsr-170 (http://jcp.org/aboutJava/communityprocess/pfd/jsr170/index.html) for php.
    * DBOO & DBOO2  (http://www.sergiocarvalho.com/wiki/OpenSourceSoftware/#toc3): A PEAR-compliant orm for php4 and php5
    * Php Object Generator (POG)  (http://www.phpobjectgenerator.com/): Free Online Generator which automatically generates tested ORM code that you can use for your PHP4/PHP5 application.
    * Qcodo (http://www.qcodo.com/): Code-generation based PHP Development Framework that not only creates your ORM, but also creates classes for your forms. Architected to allow full customization to work hand-in-hand with infinite code regenerations. Recently presented at the Zend/PHP Conference (http://zend.kbconferences.com/).

ที่มา : _http://weblog.punneng.net/2005/11/30/object-relational-mapping

ใน link ยังมีรายละเอียดของ java กับ .net ด้วยครับ

java

http://www.javaskyline.com/database.html

.net

http://sharptoolbox.com/categories/object-relational-mappers



ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 04 ส.ค. 2008, 00:29 น.
ขอบคุณครับ  :32:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 04 ส.ค. 2008, 11:08 น.
ruby ก็ได้นะครับ

เห็นเรียกแค่ find(name:=>"a") ประมาณนี้
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ต้น เมื่อ 04 ส.ค. 2008, 13:30 น.
ครับ ใน ruby จะใช้เป็น active record ซึ่งเป็นการทำ ORM model ลักษณะเดียวกันกับ hibernate ใน java

แต่ใน ruby จะได้เปรียบตรงการเขียนคอนฟิกไฟล์ที่น้อยกว่ามากๆ

รายละเอียดเพิ่มเติมครับ

http://weblog.punneng.com/2006/5/20/ruby-on-rails-activerecord

Castle Active Record ของทางฝั่ง .NET

http://coredeveloper.net/blogs/wiennat/archive/2008/04/13/castle-active-record-intro.aspx
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โตน เมื่อ 04 ส.ค. 2008, 13:35 น.

php เขียนเป็นออปเจ็ค ก็ง่ายดีนะพี่โอ้เอ้
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: WuTtY เมื่อ 13 ส.ค. 2008, 15:48 น.
อ้างคำพูดจาก: icez เมื่อ 12 มี.ค. 2008, 12:39 น.

ต้นฉบับ:
SELECT SUM(area_male_population) + SUM(area_female_population) AS population
FROM tbl_area WHERE state_id IN (
SELECT state_id FROM tbl_state WHERE country_id IN (
SELECT country_id FROM tbl_coutry WHERE country_id = xxx
));

แปล: sub นรก :30:
เลือก ผลรวม(area_male_population) + ผลรวม(area_female_population) ในฐานะ population
จาก tbl_area โดยที่ state_id อยู่ใน (
เลือก state_id จาก tbl_state โดยที่ country_id อยู่ใน (
เลือก country_id จาก tbl_coutry โดยที่ country_id = xxx
));

แปล: sub นรก กำลัง 2
เลือก ผลรวม(พื้นที่_ชาย_ประชากร) + ผลรวม(พื้นที่_หญิง_ประชากร) ในฐานะ ประชากร
จาก ทีบีแอล_พื้นที่ โดยที่ รัฐ_ไอดี อยู่ใน (
เลือก รัฐ_ไอดี จาก ทีบีแอล_รัฐ โดยที่ ประเทศ_ไอดี อยู่ใน (
เลือก ประเทศ_ไอดี จาก ทีบีแอล_ประเทศ โดยที่ ประเทศ_ไอดี = xxx
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: นายโอ้เอ้ เมื่อ 13 ส.ค. 2008, 16:18 น.
อ้างคำพูดจาก: WuTtY เมื่อ 13 ส.ค. 2008, 15:48 น.
แปล: sub นรก กำลัง 2
เลือก ผลรวม(พื้นที่_ชาย_ประชากร) + ผลรวม(พื้นที่_หญิง_ประชากร) ในฐานะ ประชากร
จาก ทีบีแอล_พื้นที่ โดยที่ รัฐ_ไอดี อยู่ใน (
เลือก รัฐ_ไอดี จาก ทีบีแอล_รัฐ โดยที่ ประเทศ_ไอดี อยู่ใน (
เลือก ประเทศ_ไอดี จาก ทีบีแอล_ประเทศ โดยที่ ประเทศ_ไอดี =  :04:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: narii เมื่อ 22 ส.ค. 2008, 13:03 น.
ว้าว กำลังเรียนอยู่เลยค่ะ เป็นประโยชน์มาก ขอบคุณค่ะ :45:
แต่ทำไมรูปมันไม่ขี้นล่ะคะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: narii เมื่อ 30 ก.ย. 2008, 00:01 น.
กำลังเรียนอยู่เลย
ไว้ค่อยมาหาความรู้
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 16 ก.พ. 2009, 19:50 น.


ขุด  :37:

ช่วงนี้ inner join บ่อยมาก จนอธิบายถูกแล้วครับ  :30:

แปลเป็นไทยง่ายๆ ว่า

รหัสลับที่เราใส่ไว้ที่ table หนึ่ง
แต่คำแปลอยู่อีก table หนึ่ง

พอเราต้องการคำแปล
เราก็ inner join เอาครับ ตามที่เราใส่รหัสไว้

เช่น

table personal
name | surname | sex_id <--- รหัสลับ

table sex
sex_id | sex_type <-- คำแปล

จะคิวรีหาคนจาก personal แล้วอยากรู้เพศด้วย แต่ถ้าคิวรีเฉยๆ จะได้รหัสลับบ้าบออะไรไม่รุ้อออกมา
เลย inner join ครับผม

select p.name, p.surname, s.sex_type
from personal p
  inner join sex s
  on (p.sex_id = s.sex_id) <-- เป็นตัวบอกว่ารหัสที่ personal นะเอามาถอดรหัสที่ sex นะ



:53: :53: :53:

ถ้าใส่รหัสไว้หลาย table ก็ใส่อย่างนี้ไปอีก

ข้อควรวะรัง  :37:
อย่าลืมตั้งชื่อเล่นหน่อมแหน้มให้ table คุณด้วยยยยยยย




ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: น็อต เมื่อ 16 ก.พ. 2009, 21:26 น.
INNER JOIN ต่างจาก LEFT JOIN หรือ RIGHT JOIN ยังไงครับ  :09:

ปกติผมใช้ LEFT JOIN ตลอดเลย
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 16 ก.พ. 2009, 22:09 น.
left join กับ right join มันถือเป็น outer join ล่ะ (ถ้าจำไม่ผิด)

เช่น ตารางแรก คือตารางชื่อคน กับแผนก ถ้า - คือยังไม่สังกัดแผนก
ชื่อ    แผนก
aaa   1
bbb   2
ccc    -
ddd   4
eee   -

ตารางที่ 2 รายละเอียดแผนก
รหัส ชื่อแผนก  bla bla
1    nnn
2    mmm
3    ppp
4    qqq
5    yyy

ถ้า left outer join แสดงว่ายึดตารางที่เราใส่ทางซ้ายเป็นหลัก เช่น ตารางแรกอยู่ทางซ้าย
จะได้ผลลัพธ์คือ
ชื่อคนทุกคนไม่ว่าจะมีแผนกหรือไม่ก็ตาม
aaa  nnn
bbb  mmm
ccc    -
ddd   qqq
eee   -

ถ้า left outer join แสดงว่ายึดตารางที่เราใส่ทางซ้ายเป็นหลัก เช่น ตารางที่สองอยู่ทางซ้าย
จะได้ผลลัพธ์คือ
ชื่อทุกแผนกแทน

ถ้า inner join จะได้
aaa   nnn
bbb   mmm
ddd   qqq

จริงๆตัวอย่างยังไม่ค่อยดีเท่าไหร่
แต่ไม่ค่อยมีเวลาอธิบายแล้ว คงไม่งงเนอะ  :40:



ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: น็อต เมื่อ 16 ก.พ. 2009, 22:14 น.
ถ้าใส่

ตารางแรก left join ตารางสอง on (ตารางแรก.แผนก = ตารางสอง.รหัส)

อย่างงี้ก็ได้ผลแบบ inner รึเปล่าครับ ?

ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กากก่อเกรียนนู้บ เมื่อ 17 ก.พ. 2009, 02:58 น.
อ้างคำพูดจาก: แอนค่ะ เมื่อ 16 ก.พ. 2009, 22:09 น.
จริงๆตัวอย่างยังไม่ค่อยดีเท่าไหร่
แต่ไม่ค่อยมีเวลาอธิบายแล้ว คงไม่งงเนอะ  :40:

:05:/ งงครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 17 ก.พ. 2009, 16:07 น.
เดี๋ยวมีเวลาจะอธิบายใหม่นะ   :30: :05a:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Soris0ri เมื่อ 17 ก.พ. 2009, 16:11 น.
จ้ะ  :30:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 17 ก.พ. 2009, 18:05 น.
table User
id    name       sex_id
1     Knot          1
2     Ann           2
3     Kor            1
4     Sorisori      NULL
5     NULL         2
6     NULL         3
7     Gums       3

table Sex
id     Sex
1      Male
2      Female
5      Unknow

select u.name, s.sex from User u inner join Sex s on u.sex_id = s.id
ได้
Knot     Male
Ann     Female
Kor     Male
Null     Female

select u.name, s.sex from User u left join Sex s on u.sex_id = s.id
ได้
Knot     Male
Ann         Female
Kor          Male
Sorisori    NULL
NULL    Female
NULL    NULL
Gums    NULL

select u.name, s.sex from User u right join Sex s on u.sex_id = s.id
ได้
Knot     Male
Kor         Male
Ann        Female
NULL    Female
NULL    Unkonw


จำง่ายๆ
inner join : จะเอามาเฉพาะ record ที่เข้าเงื่อนไขเท่านั้น
left join : เอาข้อมูลทั้งหมดของ table User มาไว้ก่อน แล้วลิสต์ข้อมูลจาก table Sex ที่ตรงเงื่อนไขมาวางต่อท้าย (จะเห็นว่า เอามาทุก record ของ table User แม้ว่า sex_id จะเป็น Null ก็ตาม)
right join : เอาข้อมูลทั้งหมดของ table Sex มาไว้ก่อน แล้วลิสต์ข้อมูลจาก table User ที่ตรงเงื่อนไขมาวางไว้ข้างหน้า


นานๆ วิชาการที เขียนตั้งนาน ไม่รู้เข้าใจกันรึเปล่า  :30a: :30a:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: โต เมื่อ 17 ก.พ. 2009, 18:15 น.
คุยอะไรกัน  :30:
select * from ... where ... โลดด. .ด . ด :56:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 17 ก.พ. 2009, 18:18 น.
เคยเจอ SQL ที่ทำงานเก่า
query เดียว ยาวมากกกก ลองก๊อบมาใส่ word ได้เกือบ 2 หน้า   :30:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กากก่อเกรียนนู้บ เมื่อ 17 ก.พ. 2009, 18:43 น.
 :07: ขอบคุณพี่เจนมากๆ ครับ  :46:
ในที่สุดก็เข้าใจ..

ว่าแต่ทำไม inner join มันได้ผลลัพธ์แค่นั้นอะครับ?

เอ๊ะ หรือว่า เพราะ sex_id ไม่มีในตาราง sex ครับ?
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กวางจ้ะ เมื่อ 17 ก.พ. 2009, 18:46 น.
อ้างคำพูดจาก: นายก่อ เมื่อ 17 ก.พ. 2009, 18:43 น.
ว่าแต่ทำไม inner join มันได้ผลลัพธ์แค่นั้นอะครับ?

เอ๊ะ หรือว่า เพราะ sex_id ไม่มีในตาราง sex ครับ?
ถูกต้องนะคร้าบ

อ้างคำพูดจาก: JanΣ เมื่อ 17 ก.พ. 2009, 18:05 น.
select u.name, s.sex from User u inner join Sex s on u.sex_id = s.id

** ดูในเงื่อนไขดี ๆ อ่ะจะจับจุดได้จ้ะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กากก่อเกรียนนู้บ เมื่อ 17 ก.พ. 2009, 18:50 น.
 :07: อ๊ะ มองข้าม..
ขอบคุณครับๆๆ  :46:

บวกให้พี่เจนกะพี่กวางครับ  :42:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 17 ก.พ. 2009, 20:41 น.
นั่นแหละๆ แบบที่พี่เจนกับกวางอธิบายเลย  :33:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: น็อต เมื่อ 17 ก.พ. 2009, 20:46 น.
เคลียร์เลยครับพี่เจน  :12:

อย่างงี้ที่ผมเขียนไป มิน่าถึงมี row เกินที่ที่มันควรจะเป็น (เลยแก้ปัญหาเฉพาะหน้าด้วยการใช้ WHERE ดัก)

ต้องเปลี่ยนมาใช้ INNER แล้ว

ขอบคุณมากครับ  :46:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ~ZephyR~ เมื่อ 18 ก.พ. 2009, 01:19 น.
inner join
natural join
join


สามอันข้างต้น คืออันเดียวกันหมดเลยครับ ต่างกันอยู่นิดหน่อย

inner join -> ชื่อนี้ มาจาก outer join นั่นแหละ ครับ มันจะได้สอดคล้องกันหน่อย

ตัวอย่างครับ (เอามาจากพี่เอ)
อ้างคำพูดจาก: เอา เมื่อ 16 ก.พ. 2009, 19:50 น.
select p.name, p.surname, s.sex_type
from personal p
  inner join sex s
  on (p.sex_id = s.sex_id)

natural join -> การ join แบบธรรมชาติ อันนี้ไม่ต้องใส่อะไรเลย ตัว dbms จะจัดการ
เชื่อมตารางโดยใช้ field (หรือ attribute) ตัวเดียวกันในการ join. ให้เอง

ตัวอย่างครับ
อ้างอิงselect p.name, p.surname, s.sex_type
from personal p
  natural join sex s <<< เห็นว่า ไม่ต้องมี on (p.sex_id = s.sex_id) แล้วชื่อจะตั้งหรือไม่ตั้งก็ได้

join -> เขียนให้เหลือสั้นๆ เฉยๆ ใช้เหมือน inner join เลยครับ

ตัวอย่างครับ
อ้างอิงselect p.name, p.surname, s.sex_type
from personal p
  join sex s
  on (p.sex_id = s.sex_id)

หรือ

อ้างอิงselect p.name, p.surname, s.sex_type
from personal p
  join sex s
  using sex_id



อ๊ะ ลืมไป
natural join เนี่ย จะใช้ได้ ชื่อ field จะต้องเหมือนกันนะครับ
อย่าง sex_id ก็ต้องเป็น sex_id ทั้ง 2 ตาราง


เอ๊ะ แล้วถ้าชื่อไม่เหมือนกันทำยังไง???

ไม่ยากครับใช้ join หรือ inner join นั่นแหละ
เช่นใน รีเลชัน personal เป็น SexID แล้วใน รีเลชัน sex เป็น sex_id
ก็จะได้แบบนี้

อ้างอิงselect p.name, p.surname, s.sex_type
from personal p
  join sex s
  on (p.SexID = s.sex_id)


นึกเพิ่มได้อีกหน่อย

left join กับ right join จริงๆ คือตัวเดียวกัน และมักใช้ left join เพราะใช้สะดวกกว่า

(ยืมข้อมูลจากลุงเจน หน่อยนะครับ)
อ้างคำพูดจาก: JanΣ เมื่อ 17 ก.พ. 2009, 18:05 น.
select u.name, s.sex from User u right join Sex s on u.sex_id = s.id

หรือ เลี่ยงไปใช้ left join เพียงอย่างเดียว

select u.name, s.sex from Sex s left join User u on s.id = u.sex_id
ได้
Knot     Male
Kor         Male
Ann        Female
NULL    Female
NULL    Unkonw

ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: pitchapron เมื่อ 27 เม.ย. 2009, 14:00 น.
ใครก็ได้ช่วยหน่อยนะคะ เพราะว่าสร้างเว็บไม่เป็นค่ะท่าน...  :02:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: กากก่อเกรียนนู้บ เมื่อ 27 เม.ย. 2009, 14:17 น.
อ้างคำพูดจาก: สตอเบอร์รี่จัง เมื่อ 27 เม.ย. 2009, 14:00 น.
ใครก็ได้ช่วยหน่อยนะคะ เพราะว่าสร้างเว็บไม่เป็นค่ะท่าน...  :02:

:34: สร้างเว็บไม่เป็น แล้วมันเกี่ยวอะไรกับ SQL เหรอครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Earthchie เมื่อ 14 พ.ค. 2009, 22:09 น.
สับสนกะ MySQL แน่ๆเลยครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: พราว (ก็พราวแหละ) เมื่อ 07 ต.ค. 2010, 00:48 น.
แอบมาเชียร์เล็กนิ่มนิสนึงค่ะ

MS SQL SERVER EXPRESS จัดว่าเป็น opensource และใน
SQL SERVER EXPRESS 2008 R2 ขยายขีดจำกัดออกมาเป็น
CPU 1 Core ,RAM 1GB ,DB SIZE 10 GB ซึ่งพอเพียงสำหรับ องค์กรขนาดเล็กจนถึงปริ่มๆจะใหญ่ได้ค่ะ

เดิมชอบ MySQL เพราะเหตุผลข้อเดียวคือ Open source (หนูเปิดแหล่งนะคะ) แต่กลับลำมาใช้ SQL SERVER
เพราะเมื่อระบบใหญ่บิ้กๆเราก็ถูกบังคับให้ซื้อ Enterprise solution ซึ่งก็แพงพอกัน แต่เจ้า SQL SERVER
ดีกว่าที่อุปกรณ์เสริม อย่าง integrate service ที่ทำตัวเองเป็นจุดศูนย์กลางดึงข้อมูลจากแหล่งอื่น
มาบริหารเอง เช่นจาก MySQL server ,Oracle server ,XML หรือกระทั่ง Text file
หรือ report service ที่ใช้ทำรายงาน และมี feature เสริมอีกเยอะค่ะ

ความแตกต่างจะยิ่งมากเมื่อเขียน query ซับซ้อนเยอะๆ
เพราะเจ้า SQL SERVER เราเขียน code .net ยัดเข้าเสริมเป็น CLR STORE PROC
เข้าใจว่า ORACLE ทำได้ แต่ใน MySQL ยังเป็นไม่ได้ค่ะ

และในการเขียน Bussiness app หนีไม่พ้นจะต้องติดต่อกับฐานข้อมูล
ในบางกรณีหากย้าย code มาเขียนที่ SQL Statement
จะเขียน code โดยรวม สั้นลง เร็วขึ้น และเสถียรมากกว่าค่ะ

อีกอย่างเรื่อง ORM เจ้านี่ก้อเหมือนกับ tecnology อื่นๆที่ไม่ใช่ยาครอบจักรวาล
มันทำเรื่องยากๆเป็นเรื่องง่ายในบางเรื่อง แต่ก็ทำเรื่องง่ายๆหลายเรื่องเป็นเรื่องโคตรจะยากไปเหมือนกัน
เช่น เรื่องง่าย เพิ่ม/แก้ไข/ลบ ข้อมูลหลาย record ตามเงื่อนไข ใน ORM ต้องมานั่งวนลูปเอาช้ามากค่ะ
แต่ถ้าเป็น SQL แบบเดิม แทบจะจบในบรรทัดเดียว แต่ใน ORM ก็ยังยอมให้รัน STORE PROC อยู่
ฉะนั้นการเรียนรู้ SQL Statement ยังจำเป็นยิ่งกว่าจำเป็นด้วยมั้งคะ








ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 07 ต.ค. 2010, 08:51 น.
ที่ไหนสอนมาครับ MS SQL Express เป็น OpenSource เนี่ย

= ='
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 07 ต.ค. 2010, 09:29 น.


ถ้า opensource แปลว่า ใช้ฟรี มันก็โอนะ  :47:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: พราว (ก็พราวแหละ) เมื่อ 07 ต.ค. 2010, 09:30 น.
ที่นี่แหละค่ะ แค่ยังไม่ได้แจก source code ซึ่งยังไงเล็กนิ่มคงไม่แจกมั้งคะ
แต่ก็อนุญาติแจกจ่ายฟรี ก็พอเรียกได้ว่า open source ได้อยู่มั้งคะ
ถ้าเทียบกับ mySQL นั่นก้อแจกแค่ตัว community server มากกว่านั้น
เค้าก้อไม่แจกแล้ว กระนั้นก็ยังเรียก mySQL ว่า opensource ไม่ใช่หรอคะ

ก้อคงสอนกันมายังงี้แหละค่ะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 07 ต.ค. 2010, 09:32 น.


ถ้าไม่ได้แจก source จะเรียกว่าเป็น open source ไม่ได้น่ะครับ ต้องเรียกว่า closed source
ถึงแม้ว่าจะให้ใช้ฟรีก็เถอะ

ซึ่งก็มีอีกหลายๆ ศัพท์ที่หมายถึงให้ใช้ฟรี เช่น
freeware, shareware
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: IM เมื่อ 07 ต.ค. 2010, 09:32 น.
 :55:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ☼ แอนมินิ ☼ เมื่อ 07 ต.ค. 2010, 09:33 น.
opensource กับการอนุญาตให้ใช้ฟรี ไม่เหมือนกันนะจ๊ะ
เป็นคนละความหมายกันและไม่สามารถใช้แทนกันได้  :12:
//อ้าว เอตัดหน้า
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: พราว (ก็พราวแหละ) เมื่อ 07 ต.ค. 2010, 13:42 น.
รับทราบค่ะต่อไปจะเรียกใช้ให้ถูก ขอบคุณมากค่ะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: IM เมื่อ 07 ต.ค. 2010, 13:44 น.
 :12:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 07 ต.ค. 2010, 13:48 น.
อ้างคำพูดจาก: พราว (ก็พราวแหละ) เมื่อ 07 ต.ค. 2010, 09:30 น.
ที่นี่แหละค่ะ แค่ยังไม่ได้แจก source code ซึ่งยังไงเล็กนิ่มคงไม่แจกมั้งคะ
แต่ก็อนุญาติแจกจ่ายฟรี ก็พอเรียกได้ว่า open source ได้อยู่มั้งคะ
ถ้าเทียบกับ mySQL นั่นก้อแจกแค่ตัว community server มากกว่านั้น
เค้าก้อไม่แจกแล้ว กระนั้นก็ยังเรียก mySQL ว่า opensource ไม่ใช่หรอคะ

ก้อคงสอนกันมายังงี้แหละค่ะ
อย่างที่ข้างบนบอกครับ freeware ก็คือ freeware (โหลดใช้ได้ฟรี)
แต่มีเงื่อนไข และข้อจำกัดการใช้งาน นะครับ สำหรับ MSSQL Express

ส่วน opensource หมายถึง software ที่เปิดเผย source code "เท่านั้น" ครับ
เพราะงั้น MySQL เป็น opensource แน่นอน และ MSSQL ไม่ว่าตัวไหนก็ ไม่มีทางเป็น opensource แน่นอน
ส่วนที่เรียกว่า community server นั่น มาจากสาเหตุที่ mysql มันฟรี เลยไม่มี support อะไรครับ
แต่ส่วนของ MySQL Enterprise เป็นการขาย "support" ครับ คือช่วยติดตั้ง ตั้งค่า และปรับการใช้งาน
อาจมีการ training พร้อมทั้ง software ประกอบอย่างอื่น อย่างพวกตัว load balancer หรือ feature ระดับสูง
เพิ่มเติม ที่ "ไม่ได้ใช้ source code ที่มาจากส่วนของ opensource"
ง่ายๆ ก็คือเป็นคนละโปรแกรมกันเลย ตรงนั้นแหละครับที่เค้าเก็บตังค์ได้

คำว่า community คือเป็นการ support จากกลุ่มผู้ใช้ด้วยกัน แค่นั้นเองครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: domifemty เมื่อ 20 มี.ค. 2011, 00:20 น.
อยากทราบว่ามีคำสั่ง sql ที่สามารถหาวันและเวลาที่น้อยที่สุด ไหมคะ
ขอความกรุณาผู้รู้ทุกท่านด้วยนะคะ
ต้องใช้ในงานโปรเจคจบคะ
:46:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ~ZephyR~ เมื่อ 20 มี.ค. 2011, 01:30 น.
SELECT *
FROM `invoice`
ORDER BY time
LIMIT 1


ORDER BY ใช้เรียงลำดับ โดย default คือ ASC (ascending เรียงจากน้อยไปมาก)
LIMIT จำกัดจำนวน record ที่ query ได้

ไม่รู้ว่าจะตรงกับความต้องการรึเปล่านะ  :40:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 20 มี.ค. 2011, 09:34 น.
อ้างคำพูดจาก: ~ZephyR~ เมื่อ 20 มี.ค. 2011, 01:30 น.
SELECT MIN(time)
FROM `invoice`


แค่นี้พอครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: domifemty เมื่อ 20 มี.ค. 2011, 13:18 น.
1 --> 2011-03-20 13:00:30
2 --> 2011-03-20 13:00:05   

ใช้ ORDER BY MIN( DATE),MIN(TIME)
แล้ว
ข้อมูลหมายเลข 1 มันออกมาก่นอนะคะ
แทนที่จะได้ข้อมูลหมายเลข 2 เพราะได้บันทึกข้อมูลมาก่อน
ไม่ทราบว่า ทำถูกแล้วหรือว่าคิดส่วนไหนผิดคะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: domifemty เมื่อ 20 มี.ค. 2011, 14:48 น.
อ้างคำพูดจาก: domifemty เมื่อ 20 มี.ค. 2011, 13:18 น.
1 --> 2011-03-20 13:00:30
2 --> 2011-03-20 13:00:05   

ใช้ ORDER BY MIN( DATE),MIN(TIME)
แล้ว
ข้อมูลหมายเลข 1 มันออกมาก่นอนะคะ
แทนที่จะได้ข้อมูลหมายเลข 2 เพราะได้บันทึกข้อมูลมาก่อน
ไม่ทราบว่า ทำถูกแล้วหรือว่าคิดส่วนไหนผิดคะ


ขอบคุณนะคะ
ตอนนี้หาทางแก้ได้แล้วคะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 28 มิ.ย. 2011, 01:32 น.
มาแอบดู ไม่มีใครสอนต่อแล้วเหรอ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: psyfer เมื่อ 28 มิ.ย. 2011, 09:48 น.
อ๊ะ  กำลังเรียนตัวนี้เลย เทอมโปรเจคมีที่พึ่งพิงแล้ว ปาบปื้ม  :25: :25:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 28 มิ.ย. 2011, 11:16 น.


ค่าสอนสี่แสน
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: psyfer เมื่อ 28 มิ.ย. 2011, 11:27 น.
แลกกะค่าอิลัสนะ  :47:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 28 มิ.ย. 2011, 19:48 น.
เรากำลังจะทำ ใบสมัครออนไลน์

กำลังคิดว่าจะทำเองหรือจะจ้างทำดี


ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 28 มิ.ย. 2011, 20:47 น.
ใบสมัครอะไรอ้ะ ใช้ google doc เล้ย  :27:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 28 มิ.ย. 2011, 22:47 น.
google doc แล้วไงต่อพี่เจน

พอคนเข้ามากรอก แล้วมันส่งข้อมูลเข้าเมลเราได้เลยเหรอ

ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 03 ก.ค. 2011, 18:53 น.
ขอเบิ้ลนะ

คือเราทำใบสมัครออนไลน์มาแล้ว มัน echo ไม่ได้ (ที่เครื่องนี้ เครื่องอื่นไม่มีปัญหา)

1. มันต้องไปตั้งค่าอะไร ที่ไหน หรือใน php.ini ไรแบบนี้รึเปล่า

หรือว่าทำอะไรมั่วไปรึเปล่า


2. ถ้าทำเสร็จแล้ว จะทำให้ มีการดึงข้อมูล(คนที่เพิ่งสมัครมา) แสดงเป็น pdf แล้วส่งเข้าเมล
มีขั้นตอน(ย่อๆ) ยังไงบ้าง คืออ่านใน fpdf แล้วไม่เข้าใจ
หรือว่าเราต้องทำให้มัน echo ออกมาให้ได้ก่อน แล้วถึงจะไม่งง


* แนบไฟล์มาให้ Download คลิกที่นี่ (http://file1.uploadfile.biz/i/EXENMEIIMEEEDZ)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 03 ก.ค. 2011, 18:54 น.
ข้อ 1 มีตัวอย่าง code มั้ยครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 03 ก.ค. 2011, 18:59 น.
แนบมาแล้วจ๊ะ (เดี๋ยวนี้แนบไฟล์ไมไ่ด้แล้วเหรอ)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 03 ก.ค. 2011, 19:20 น.
เล่นบนมือถือ เปิด rar ไมทได้ T_T


เอาแค่บรรทัดที่สั่ง echo อะครับ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 03 ก.ค. 2011, 19:22 น.
  <?php
   echo "photo= $photo
";
  echo "xname=$xname
";
  echo "surname=$surname
";
  ?>
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 03 ก.ค. 2011, 19:31 น.
ตัวแปร ถ้า submit มาจาก formต้อง  get ค่ามันก่อนนะครับ

$photo =$_POST['photo'];
$xname =$_POST['xname'];
$surname = $_POST['surname'];

แล้วค่อยสั่ง echo
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 03 ก.ค. 2011, 19:55 น.
ที่ยาวๆ มันคือแบบนี้

<?php
  $photo=$_POST[photo];
  $xname=$_POST[xname];
  $surname=$_POST[surname];
  $age=$_POST[age];
  $id_num=$_POST[id_num];
  $birth_date=$_POST[birth_date];
  $nationality=$_POST[nationality];
  $race=$_POST[race];
  $address=$_POST[address];
  $province=$_POST[province];
  $post_code=$_POST[post_code];
  $phone_num=$_POST[phone_num];
  $status=$_POST[status];
  $children=$_POST[children];
  $father_name=$_POST[father_name];
  $father_occ=$_POST[father_occ];
  $father_income=$_POST[father_income];
  $father_alive=$_POST[father_alive];
  $mother_name=$_POST[mother_name];
  $mother_occ=$_POST[mother_occ];
  $mother_income=$_POST[mother_income];
  $mother_alive=$_POST[mother_alive];
  $family_status=$_POST[family_status];
  $bro_sis=$_POST[bro_sis];
  $bro_num=$_POST[bro_num];
  $sis_num=$_POST[sis_num];
  $your_num=$_POST[your_num];
  $school_m1=$_POST[school_m1];
  $major_m1=$_POST[major_m1];
  $end_year_m1=$_POST[end_year_m1];
  $gpa_m1=$_POST[gpa_m1];
  $school_m4=$_POST[school_m4];
  $major_m4=$_POST[major_m4];
  $end_year_m4=$_POST[end_year_m4];
  $gpa_m4=$_POST[gpa_m4];
  $school_other=$_POST[school_other];
  $major_other=$_POST[major_other];
  $end_year_other=$_POST[end_year_other];
  $gpa_other=$_POST[gpa_other];
  $ref_person_name=$_POST[ref_person_name];
  $relationship=$_POST[relationship];
  $ref_person_num=$_POST[ref_person_num];
  $how_to_know=$_POST[how_to_know];
  $rec_name=$_POST[rec_name];
  $rec_num=$_POST[rec_num];
  $area=$_POST[area];
  $other_media=$_POST[other_media];

  echo "photo=$photo
";
  echo "xname=$xname
";
    echo "surname=$surname
";

 
?>
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 03 ก.ค. 2011, 21:21 น.
<?php
 $photo
=$_POST['photo'];
 
$xname=$_POST['xname'];
 
$surname=$_POST['surname'];
 
$age=$_POST['age'];
 
$id_num=$_POST['id_num'];
 
$birth_date=$_POST['birth_date'];
 
$nationality=$_POST['nationality'];
 
$race=$_POST['race'];
 
$address=$_POST['address'];
 
$province=$_POST['province'];
 
$post_code=$_POST['post_code'];
 
$phone_num=$_POST['phone_num'];
 
$status=$_POST['status'];
 
$children=$_POST['children'];
 
$father_name=$_POST['father_name'];
 
$father_occ=$_POST['father_occ'];
 
$father_income=$_POST['father_income'];
 
$father_alive=$_POST['father_alive'];
 
$mother_name=$_POST['mother_name'];
 
$mother_occ=$_POST['mother_occ'];
 
$mother_income=$_POST['mother_income'];
 
$mother_alive=$_POST['mother_alive'];
 
$family_status=$_POST['family_status'];
 
$bro_sis=$_POST['bro_sis'];
 
$bro_num=$_POST['bro_num'];
 
$sis_num=$_POST['sis_num'];
 
$your_num=$_POST['your_num'];
 
$school_m1=$_POST['school_m1'];
 
$major_m1=$_POST['major_m1'];
 
$end_year_m1=$_POST['end_year_m1'];
 
$gpa_m1=$_POST['gpa_m1'];
 
$school_m4=$_POST['school_m4'];
 
$major_m4=$_POST['major_m4'];
 
$end_year_m4=$_POST['end_year_m4'];
 
$gpa_m4=$_POST['gpa_m4'];
 
$school_other=$_POST['school_other'];
 
$major_other=$_POST['major_other'];
 
$end_year_other=$_POST['end_year_other'];
 
$gpa_other=$_POST['gpa_other'];
 
$ref_person_name=$_POST['ref_person_name'];
 
$relationship=$_POST['relationship'];
 
$ref_person_num=$_POST['ref_person_num'];
 
$how_to_know=$_POST['how_to_know'];
 
$rec_name=$_POST['rec_name'];
 
$rec_num=$_POST['rec_num'];
 
$area=$_POST['area'];
 
$other_media=$_POST['other_media'];

 echo
"photo=$photo";
 echo
"xname=$xname";
 echo
"surname=$surname";


?>
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 03 ก.ค. 2011, 22:20 น.
ลองเอาขึ้นโฮส มันทำได้แหละ

แต่ในเครื่องเหมือนเดิม

:05:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 04 ก.ค. 2011, 01:06 น.
เบิ้ล อีกที

มันเป็นแบบนี้เลย

(http://img3.f0nt.com/04/9b4b0aa6bbbe3e714569a6042bb7b7de.jpg)


:48:
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 04 ก.ค. 2011, 02:50 น.


ลืมปิด tag อะไรซักอย่างแหละ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 04 ก.ค. 2011, 02:58 น.
แต่มันเป็นหลายไฟล์เลยนะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 04 ก.ค. 2011, 07:59 น.
php.ini แก้ short_open_tag =On

หรือไม่ก้แก้ไฟล์ ตรงไหนที่เป็น <? เฉยๆ แก้เป็น<?php ให้หมด
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 04 ก.ค. 2011, 10:53 น.
อ้างคำพูดจาก: Pix เมื่อ 04 ก.ค. 2011, 01:06 น.
เบิ้ล อีกที

มันเป็นแบบนี้เลย

(http://img3.f0nt.com/04/9b4b0aa6bbbe3e714569a6042bb7b7de.jpg)


:48:



ต้องเปิดผ่าน url http://localhost (http://localhost)
เปิดไฟล์ php ตรงๆ ผ่าน browser แบบนี้มันไม่ได้อยู่แล้ว
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: icez เมื่อ 04 ก.ค. 2011, 15:34 น.
เออ :30: เพิ่งเห็น url (เมื่อกี้ตอบผ่านมือถือ ไม่ทันสังเกค)
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 04 ก.ค. 2011, 16:18 น.
เปิดใน localhost มันกลายเป็นหน้าว่างๆ ไปเลยแหละ

ลองเปลี่ยน output เป็นแบบอื่นๆ แล้ว ก็ไม่ต่างกัน
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 04 ก.ค. 2011, 16:22 น.
แล้วมันได้สร้างไฟล์ report.pdf ให้รึเปล่า
ถ้าสร้าง เนื้อหา/รูปแบบ ตรงตามที่กำหนดรึเปล่า
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 04 ก.ค. 2011, 16:29 น.
มันไม่สร้าง
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: JΛNΣ เมื่อ 04 ก.ค. 2011, 16:48 น.
ใส่อันนี้ไว้บนสุด แล้วดูว่ามันมี error อะไรออกมาบ้าง

error_reporting(E_ALL);
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ยุนเอ เมื่อ 04 ก.ค. 2011, 16:54 น.


ลองเช็คว่าไฟล์เป็น UTF-8 without BOM รึเปล่าด้วยนะ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: Piix เมื่อ 04 ก.ค. 2011, 18:34 น.
ถอดใจแล้วอ่ะ จ้างคนอื่นทำละ

ไว้เค้าทำเสร็จแล้วจะเอามาแกะดู

ขอบคุณทุกคนคราบบบบบ
ชื่อเรื่อง: ตอบ: ภาษา SQL
โพสต์โดย: ณต เมื่อ 24 ก.พ. 2013, 06:03 น.
ขออนุญาตขุด   

ขอความช่วยเหลือครับ
คือจะเพิ่ม record ในตาราง ที่มี field หนึ่งเป็น DATE
อยากจะใส่ Field นี้ด้วยวันที่ที่เพิ่มไปเรื่อยๆ จากวันที่กำหนด จนถึงสิ้นปี

มีใครพอจะเขียนเป็น SQL ให้ได้บ้างครับ  :46:
ตูลืม SQL ไปเกือบหมดแล้ว  :05: