ไม่รู้มีคนสนใจกันหรือเปล่า แต่ห้าว อยากเขียน
+++++++++++++++++++++++++++++++++++
เวลาเราเขียนเว็บ เขียนโปรแกรม ส่วนใหญ่ ก็จะทำงานกับฐานข้อมูล
ต่อให้เก่งโปรแกรมแค่ไหน ถ้า SQL ไม่ได้ ก็แป็ก
ตอนนี้แม้มี โปรแกรมออกมาอำนวยความสะดวก ในการจัดการดาต้าเบส เยอะแยะ
แต่ถ้าไม่มีพื้น เปิดโปรแกรมเข้าไป ก็อาจหงายหลังเอาง่ายๆเหมือนกัน
เริ่มแรก มารู้จัก ดาต้าเบสกันก่อน
ฐานข้อมูล ตอนนี้มีออกมาหลายยี่ห้อ ที่ดังๆก็เช่น SQL Server , Microsoft Access , MySQL ,DB2
เราก็เลือกมาซักอย่างมาจะใช้อันไหน
ถ้าข้อมูลไม่เยอะมาก เน้นง่าย สะดวก ก็ Microsoft Access
ถ้าใหญ่มาก แต่เน้นสาย Microsoft (เขียนเว็บพวก ASP) ส่วนใหญ่นิยม SQL Server
หรือเน้นสายฟรี พวก PHP ก็ MySQL
เคยเห็นพวกเว็บบอร์ดสอนเขียนโปรแกรม จะมีคนเข้ามาถามว่า ASP กับ PHP อันไหนดีกว่ากัน
จากประสบกาม ของผม เอาง่ายๆเลยคือ โฮสที่เป็น Windows สำหรับ ASP จะแพงกว่า โฮส พวกสาย Linux สำหรับ PHP มาก
ต่อ Rep2 ละกัน เดี๊ยวยาวมาก ไม่มีคนอ่าน :24:
เข้ามาอ่านแล้วนา :33:
อันนี้สอนเน้น ฝั่งไมโครซอฟละกันนะ ผมคล่องทางสายนี้หน่อย
แต่ผมไม่ได้จบคอมนะ อันไหนผิดๆถูกๆ ก็ท้วงด้วยละกัน
ต่อๆ +++++++++++++++++++++++++++
เวลาเราจะสร้างฐานข้อมูลอะไรซักอย่าง
มันจะได้ก้อนไฟล์มาก้อนหนึ่ง หน้าตาประมาณนี้
อันนี้ ของ 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)
ขอปิดบังนามสกุลกันหน่อยนะ พอดีเปิดของจริงมาให้ดูกันเลย
:25:
ได้ความรู้ เอาไปเขียนโปรแกรมทำโปรเจค
มาอธิบาย Table กันหน่อย
Table หนึ่ง จะประกอบด้วย หลาย Field (ใน Access) หรือ เรียกอีกอย่างหนึงว่า Column (ตาม Sql Server)
อธิบายกันก่อน ว่า Field คืออะไร
Field มันก็คือ ส่วนย่อย ของ Table อืม อธิบายไงดีหว่า ดูรูป ก่อนละกัน
ตามแนวตั้ง ตามลูกศร สีแดง เรียกว่า Field ตามแนวนอน ลูกศรสีน้ำเงิน เรียก Record นะครับ
(http://666.filmmun.com/uploads/post-1-1152087893.jpg)
เดาว่า เข้าใจกันหมดแล้วแหละ :33:
....
ยกตัวอย่างเลยดีกว่า
สมมติว่าเราจะเก็บข้อมูลของ กระเทยในหมู่บ้าน กอไก่
ข้อมูลของกระเทยหนึ่งคน คือหนึ่งเรคคอร์ด
ข้อมูลของกระเทยหลายๆคน คือ หลายๆ เรคคอร์ด จะรวมอยู่ในหนึ่งเทเบิ้ล
แต่ข้อมูลหนึ่งเรคคอร์ด จะประกอบด้วยหลาย กอลั่ม (=column นั่นแหละ แต่ที่บริษัทผมเรียก กอลั่ม)
กอลั่ม คือ ชนิดของรายละเอียด เช่น ชื่อ , นามสกุล , ขนาด(ของแขน) , ความยาว(ของแขน)
โอ่ว รังสีขี้เกียจ แผ่ออกจากร่างแล้ว วันหลังมาต่อ :29:
รีบๆมาต่อนะครับ เห็นแววดีมีสาระแล้ว :22:
ขยันมาจากไหน ไปทำ http://www.devfree.com ก่อนเถอะ :30:
อ้างคำพูดจาก: นายโอ้เอ้ เมื่อ 05 ก.ค. 2006, 17:20 น.
ขยันมาจากไหน ไปทำ http://www.devfree.com ก่อนเถอะ :30:
โพสไวในนี้ แล้วไปแปะในนู้นไง ง่ายดี ครับ :30:
กรี๊ดดดดดดดด
พี่ถลอกมาาาาาา ~~
:25:
:39:
ต่อด่วนเลยครับ :25:
ถลอก กินอะไรผิดสำแดงมาหรือเปล่า :42:
ดูท่างทางแนวโน้มจะเอียงไปหา 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:
ใจเย็นดิพี่ท่าน อธิบายฐานข้อมูลก่อนไง เดี๊ยวพอถึงเรื่องภาษาจริงๆจะได้ไม่งง :42:
:25: :25: :25:
กำลังอยากรู้เรื่องเลยครับ
เชิญเฮียถลอกต่อได้เลย
แควนๆรออ่านเพียบๆ
ขั้นสอง การ Normalization
มันคือ การลดความซ้ำซ้อนของฐานข้อมูล ทำให้มันไม่ ยุ่งเหยิง ยึกยือ ประมาณนั้น
ข้อดีคือ มันจะทำให้ฐานข้อมูล เป็นระเบียบ ฐานข้อมูลมีขนาดเล็ก ทำให้เวลาเราเรียกดูข้อมูล มันจะทำได้อย่างรวดเร็ว
แต่ เรื่องนี้ผมขี้เกียจเขียน เอาเป็นว่า
ไปอ่านที่ http://cptd.chandra.ac.th/selfstud/Database/normalization.htm แทนละกัน
เขียนได้เข้าใจง่ายพอสมควร
อ่ะ หลังจากเตรียมความพร้อมกันเรียบร้อย แล้ว
ก็ได้เวลามาเข้าเรื่อง ภาษา SQL จริงๆกันเสียที :30: :30: :30:
ขั้นสาม การดึงข้อมูลจาก Table แบบง่ายสุดๆ
ช่วงนี้จะเป็นคำสั่ง ให้ดึงข้อมูลจากในเทเบิ้ล ออกมาแสดงอย่างง่ายก่อนนะครับ
ลักษณะภาษาก็จะเป็น
Select ชื่อกอลั่ม1, ชื่อกอลั่ม2, ชื่อกอลั่ม3 From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)
เอาที่ละกันขึ้น
สมมติว่ามี Table เก็บข้อมูลนักเรียนในชั้นก่อน
หน้าเป็นแบบนี้
++++++++++++++++++++++++++= ทำงานก่อน เดี๊ยวมาต่อ
มีสาระเป็นด้วย :44:
นานๆที :33:
:08: รีบมาต่อซิครับ
อ้างคำพูดจาก: ถลอก เมื่อ 05 ก.ค. 2006, 23:42 น.
ใจเย็นดิพี่ท่าน อธิบายฐานข้อมูลก่อนไง เดี๊ยวพอถึงเรื่องภาษาจริงๆจะได้ไม่งง :42:
บ่ได้ใจร้อนเด้อ
แต่กลัวหลายๆคนเข้ามาอ่านแล้วไม่ได้ติดตามเท่านั้นเองครับ
เพราะผมเห็นนักเรียน/นักศึกษาหลายคนไม่รู้จักว่า SQL คืออะไรซะแล้ว(นึกว่าคือ DBMS)...
go ahead :43:
ขั้นสอง การ Normalization
มันคือ การลดความซ้ำซ้อนของฐานข้อมูล ทำให้มันไม่ ยุ่งเหยิง ยึกยือ ประมาณนั้น
อันนี้ :02:
ข้อดีคือ มันจะทำให้ฐานข้อมูล เป็นระเบียบ ฐานข้อมูลมีขนาดเล็ก ทำให้เวลาเราเรียกดูข้อมูล มันจะทำได้อย่างรวดเร็ว
แต่อันนี้ :44:
หลังการทำ normalize ส่วนมากจะทำให้ฐานขอมูลมีขนาดใหญ่ขึ้น(เพราะหลายครั้งต้องแตกตารางและสร้างความสัมพันธ์) จึงให้ไม่เร็ว(หลายๆคนใช้ตารางเดียวจะเร็วมาก แต่ไม่ normalize) ข้อดีการทำ normailize (ลดความซ้ำซ้อน แต่หลายครั้งเพิ่มความซับซ้อนนะ - สังเกตุ ซ้ำซ้อน กับ ซับซ้อน ไม่เหมือนกันนะ)จุดประสงค์เหมือนประโยคด้านบน คือเน้นเรื่อง integrity
ก็ได้เวลามาเข้าเรื่อง ภาษา SQL จริงๆกันเสียที :30: :30: :30:
Cheer............... go go
เอ จากประสบกาม ฐานข้อมูลมันเล็กลง ครึ่งต่อครึ่งเลยจริงๆนะจ๊ะ
เดี๊ยวพรุ่งนี้ อยู่บริษัท จะเอารูปมาแปะให้ดู :05:
อ้างคำพูดจาก: ถลอก เมื่อ 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....
:09:
เอาพื้นฐานก่อนสิครับ
อ้างคำพูดจาก: ภูกระดึง เมื่อ 06 ก.ค. 2006, 22:51 น.
:09:
เอาพื้นฐานก่อนสิครับ
ฮิ ฮิ นั้นแหละ...
ต่อเลย น้องถลอก ...
เอาว่าประเด็นผมขอหยุดไว้ก่อนนะ นะ.. เพราะไม่งั้นความตั้งใจอาจไม่จบ..ถ้าแจมๆนิดๆก็ขออภัยด้วย ถ้าใครอยากอ่านไหลลื่นข้ามของผมไปก่อนนะครับ..
Cheer
:05: :05: :05: :05: :05:
ลืมจู๋นี้ไปเลย :43:
เย้ กลับมาแล้ว หลายคนรอคอยอยู่ ..
ส่วนผมไม่กวนแหละ..
CHEER....................
จะทำ app ทีไร มักมาตายตรง ดาต้าเบส นี่แหละครับ :38:
ถลอกเล่นเกมจนลืมไปแล้วมั้ง :42:
ตั้งโจทย์ให้คิดเล่นๆ
สมมติให้มี db ข่าว ให้แสดงข่าวแต่ละหัวข้อโดยตามเวลาที่กำหนด เช่น ข่าวหมีโหดแสดงตั้งแต่วันที่ 5 ตุลา ถึง 7 ตุลา
เหมือนง่าย :43:
ถามหน่อยมีใครเคย relate ข้าม database บ้างรึเปล่า หมายถึง server database คนละตัวเลยนะ
ตกลงเค้าไม่สอนกันแล้วเหรอ :25:
อ้างคำพูดจาก: ถลอก เมื่อ 06 ก.ค. 2006, 15:02 น.
Select ชื่อกอลั่ม1, ชื่อกอลั่ม2, ชื่อกอลั่ม3 From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)
ขอเสริมนิดนะครับ
ถ้าต้องการ select ทุกคอลัม ใช้ * ครับ เช่น
Select * From ชื่อเทเบิ้ล Where เงื่อนไข Order By ชื่อฟิล์ดที่ต้องการให้เรียงลำดับ Desc (หรือ Asc)
อ้างคำพูดจาก: kitty-ไอ้หมีอ้วน* เมื่อ 06 ต.ค. 2006, 10:52 น.
ตั้งโจทย์ให้คิดเล่นๆ
สมมติให้มี db ข่าว ให้แสดงข่าวแต่ละหัวข้อโดยตามเวลาที่กำหนด เช่น ข่าวหมีโหดแสดงตั้งแต่วันที่ 5 ตุลา ถึง 7 ตุลา
เหมือนง่าย :43:
ถามหน่อยมีใครเคย relate ข้าม database บ้างรึเปล่า หมายถึง server database คนละตัวเลยนะ
เคยครับ
ปล. ลืมจู๋นี้ไปเลย :44:
กระ๋จู๋มีสาระ ต่อเลยครับ
จะได้เอาไปใช้ในการเรียน
ติดตามมานาน แต่ไม่มีอะไรเคลื่อนไหว :12:
ท่านผู้รู้ไปไหนละค้าบ
กระผมรออ่านอยู่........ค้าบ จะเอาไปใช้เรียน :01:
ใน mysql ผมจะใส่ ค่าเป็นเวลา จะ set datatype เป็นอะไรครับ
ขอยาดลงชื่อไว้ก่อน จะได้ตามอ่านง่ายๆ
(ลอกลุงชาย) จู๋ดีมีสาระค่ะ :12:
อ้างคำพูดจาก: auytoday เมื่อ 03 ธ.ค. 2006, 13:19 น.
ใน mysql ผมจะใส่ ค่าเป็นเวลา จะ set datatype เป็นอะไรครับ
ถ้าเอาแบบอ่านง่ายๆ ก็ date, ไม่ก็ datetime
ถ้าจะเอามาคำนวน ก่อนจะเก็บเป็นเวลาให้แปลงเป็น timestamp แล้วเก็บเป็น int ได้
เอามาบวกลบเช่นปกติ ได้เวลาเป็นจำนวนวินาที
เรียกร้องให้สอนต่อค่ะ กำลังหาสาระใส่ตัว
เฟิร์น :25:
คะ :09:
:25: กระจู๋นี้หายไปนาน
:26: เริ่มตรงไหนดีหว่า ลืมไปหมดแล้ว
เอา sql ล้วนๆเลยได้ไหมอ่ะ
ไม่พูดถึงเรื่องดาต้าเบสนะ
อันนี้ภาพดาต้าเบสตัวอย่างนะครับ ดูกันไปก่อน
(http://img2.f0nt.com/08/0a92303ffa0861e1d86100e96cd36563.gif)
(http://img2.f0nt.com/08/b7b1040c1ab034f3c4e75e7a4eb83b09.jpg)
วันที่ๆ ๆ :25b:
มีเทคนิคอะไรมั้งฮะๆ
รูปแบบ วิธี ดึงข้อมูล ก็อย่างที่เคยบอกไปแล้วนะครับ
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
เงื่อนไข
ถ้าเราเรียก ชื่อ กับเบอร์โทรมาแล้ว
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:
(+2) แล้วรออ่านต่อครับ
ป.ล.ไอ้เชษนี่ ใครนะ :26:
ต่อครับ เรื่อง เวลาดึงมา แล้วให้มันเรียงลำดับ
อันนี้ง่ายๆครับ
เอา 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 ละกัน โปรแกรมสามัญประจำบ้าน
สงสัยครับ สงสัย
เอกำลังทำโปรแกรมที่เอาไปรันที่ไหนก็ได้ (เฉพาะในวินโดวส์ :02: )
โดยกะว่าจะใช้ฐานข้อมุล access นะครับ (เพราะคิดว่าคงเอาไปรันที่ไหนก็ได้)
อยากรู้ว่า ถ้าเอาไปรันในเครื่องที่ไม่มี Access เนี้ยจะรันได้มั้ยครับ
เขียนโดย VB.NET นะครับ โดยที่โปรแกรมเอจะมี ไฟล์ .mdb อยุ่ในตัวเลยนะครับ
หรือว่ามีวิธีไหนเด็ดดวงๆ ก็บอกมาได้เลยนะครับ :25b:
ตอบ ไม่ได้ครับต้องลง access ด้วย เคยลองมาแล้ว :31:
vb6 ทำได้นะครับ
ใช้ object oledb เอา
อ้างคำพูดจาก: icez เมื่อ 11 ม.ค. 2007, 18:47 น.
vb6 ทำได้นะครับ
ใช้ object oledb เอา
vb.net ก็มี oledb นินา :09:
อ้างคำพูดจาก: ถลอก เมื่อ 08 ม.ค. 2007, 16:07 น.
select [name] , [tel] from m_user
ขอเสริมตรง field name ไม่จำเป็นต้องใส่ [...] ยกเว้นแต่ field name นั้นมีช่องว่างระหว่างชื่อ เช่น field name ชื่อ first name เราจะเขียนเป็น [first name] แต่ถ้าตั้งเป็น FirstName ก็ไม่ต้องใส่ครับ
note: เพื่อกันงง คนที่ติดตาม
ข้ามของผมไปก่อนได้เลยครับ เดี๋ยวจะไม่ต่อเนื่อง
อ้างคำพูดจาก: ถลอก เมื่อ 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 นั้น
อ้างคำพูดจาก: ^-FakE-^ เมื่อ 11 ม.ค. 2007, 12:14 น.
สงสัยครับ สงสัย
เอกำลังทำโปรแกรมที่เอาไปรันที่ไหนก็ได้ (เฉพาะในวินโดวส์ :02: )
โดยกะว่าจะใช้ฐานข้อมุล access นะครับ (เพราะคิดว่าคงเอาไปรันที่ไหนก็ได้)
อยากรู้ว่า ถ้าเอาไปรันในเครื่องที่ไม่มี Access เนี้ยจะรันได้มั้ยครับ
เขียนโดย VB.NET นะครับ โดยที่โปรแกรมเอจะมี ไฟล์ .mdb อยุ่ในตัวเลยนะครับ
หรือว่ามีวิธีไหนเด็ดดวงๆ ก็บอกมาได้เลยนะครับ :25b:
ต้องลง OleDB JetEngine ครับ แค่นั้นก็ใช่ได้( download ที web Microsoft)
ถ้าง่ายก็อย่างที่คนที่บอกว่าลองมาแล้วไม่ได้ คือลงทั้งตัว(ถ้าไม่ใช้ Acess ก็ไม่แนะนำครับ)
ลองใช้ InstallShield ดูครับ มันจะเพิ่มตัว Database Driver(OLEDB Jet Database) ให้เองครับ
อ้างคำพูดจาก: ThaiBuddy เมื่อ 12 ม.ค. 2007, 01:08 น.
ต้องลง OleDB JetEngine ครับ แค่นั้นก็ใช่ได้( download ที web Microsoft)
ถ้าง่ายก็อย่างที่คนที่บอกว่าลองมาแล้วไม่ได้ คือลงทั้งตัว(ถ้าไม่ใช้ Acess ก็ไม่แนะนำครับ)
ลองใช้ InstallShield ดูครับ มันจะเพิ่มตัว Database Driver(OLEDB Jet Database) ให้เองครับ
:25b: ขอบคุณครับ จะเอาไปลอง
แต่ vs2005 กับ 2003 ต่างกันเยอะเหมือนกันนะนี้ หาtools ไม่ค่อยเจอเลย เปลี่ยนชื่อซะงั้น :08:
อ้างคำพูดจาก: ^-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
ยังไม่ไปถึงไหนเลย :05:
มาสอนสิคะ :05:
ถลอกเอาแต่เล่นเกม :47:
พรุ่งนี้จะมาแปะนะ :25:
รออ่านด้วยคนครับ :01:
ลืมไปแล้วว่าจะเอาอะไรมาแปะ :31:
โห่ :07:
งั้นสอนสดๆ เลย ละกัน
ถ้าบางทีเราจะ 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:
อ้างคำพูดจาก: ซ้อซั้ว เมื่อ 17 พ.ย. 2007, 03:37 น.
เราอยากรู้ว่าคำที่มีตัว e อยู่ใน data มีกี่อัน
มีกี่คำ :09: รึแสดงเป็นจำนวนตัวอี
สัญลักษณ์
เหมือนเวลาเสิร์ชในดอสใช้ ? แทนตัวที่เป็นอะไรก็ได้ในตำแหน่งนั้นๆที่ไม่ได้ fix
กี่ Row อะเฟิร์น
ประมาณนั้น เลยเรื่องสัญลักษณ์ :12:
เรียนด้วย :25:
อ้างคำพูดจาก: คุณเอ เมื่อ 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
อ่า :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:
แปะครับ
ตามมาอ่านเรื่อยๆนะ :27:
อ้างคำพูดจาก: คุณเอ เมื่อ 03 มี.ค. 2008, 01:02 น.
วันนี้จะมาสอนเรื่อง pagination ครับ pagination แปลว่าการแบ่งหน้า เผื่อเอาไป google อย่างอื่นต่อในภายภาคหน้า
:27: เท่าที่รู้ LIMIT ไม่ใช่ standard SQL นี่ครับ
แนะนำ pagination ของ DBMS อื่นq และแบบที่ใช้เป็นสากลได้ทุก DBMS ด้วยสิครับ
รู้แค่นี้ละครับ :52:
อ้างคำพูดจาก: unowen เมื่อ 11 มี.ค. 2008, 18:24 น.
:27: เท่าที่รู้ LIMIT ไม่ใช่ standard SQL นี่ครับ
แนะนำ pagination ของ DBMS อื่นq และแบบที่ใช้เป็นสากลได้ทุก DBMS ด้วยสิครับ
ลองดูนี่ครับ http://www.codenone.com/node/698
เห็นเค้ากำลังคุยกันเรื่องนี้เหมือนกัน :27:
อ้างคำพูดจาก: 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:
ถามครับ สมมุติมีฐานข้อมูลประชากรที่มีโครงสร้างดังนี้
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 นะ)
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
));
ประมาณนี้ครับ
หูย สุดยอดด ขอบคุณ icez มากครับ :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 ไหม
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 หลายทีมันช้ากว่ามั๊ย แต่ไม่น่าจะมากเท่าไหร่
ยังไงรบกวนช่วยอธิบาย code ของ icez กับ โต ด้วยได้หรือเปล่าครับ
คือความรู้เรื่อง sql ผมมันอ่อนด๋อยมากอ่ะ อยากรู้เรื่องมั่ง
ลองไปหาอ่านในเว็บ mysql.org (ซึ่งอ่านยากพอๆกับ help ของ flash :05:) ก็ยังไม่เข้าใจว่า AS กับ IN() มันทำอะไรได้ แล้ววิธีของโตที่มี a. , s. พวกนี้คืออะไีรเหรอครับ
ตัว a s c ของโต ดูที่ตอนเรียก FROM ครับ เหมือนเป็นการสร้างชื่อเพื่อแทนค่าใน table นั้นๆ เพื่อป้องกันการเรียกซ้ำซ้อนครับ
เดี๋ยวขอลองคิดดูแป๊บนึงพึ่งเปิดคอม :12:
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:
เหมือนจะเิริ่มเข้าใจแล้ว
แต่พอเปิด editplus ขึ้นมาจะเขียนเองก็พบว่ายังไม่ค่อยเข้าใจอยู่ดีครับ :30: :05:
:46:
:05: คิดแบบแปลกกว่านี้ไม่ออกแล้วครับ ว่าจะใช้ group by ไม่ก็ inner join แต่มันก็ sum ชาย หญิงไม่ได้
จะลองเขียน sql ให้ลองเขียนที่ mysql เลยครับ ลองใช้ tools ดู เช่น sqlyog
ไม่ต้องแปลกก็ได้ครับ แค่อธิบายคำว่า group by กับ inner join อะไรนี่ให้ผมฟังก็ได้บุญแล้ว 55
http://www.w3schools.com/sql/sql_groupby.asp
http://www.w3schools.com/sql/sql_join.asp
อธิบายไม่ถูกจริงๆ ครับ :08:
เพิ่มเติม 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)
ทีแรกผมก็ว่าจะเขียน 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) จะเร็วมากๆ ครับ
ไม่ว่าแบบไหนก็เหอะ
ไม่รู้เรื่อง :37:
ไม่เห็นจะยากเลย :33:
ไม่เข้าใจอย่างรุนแรง
ต้นฉบับ:
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
));
:39b:
:30:
กำลังเริ่มๆ คิดจะศึกษา
ลง appserv เล่นๆ ยังงงๆ กับ sql กับ php อีกบาน
ไม่ยากเลยครับ :25:
ลงแล้ว ครีเอทดาต้าเบสมาอันนึง มีสัก2-3คอลัม
แล้วไปจับ php เรียกข้อมูลในนั้นออกมาแสดง
ถือเป้นการเริ่มต้น พอได้แล้วค่อยลองไปดูพวกโปรแกรมง่ายๆ มานั่งแกะดูโค๊ดเอา
อ้างคำพูดจาก: icez เมื่อ 12 มี.ค. 2008, 06:53 น.
จริงๆ ถ้าทำ index ไว้ (หรือเป็น primary key) จะเร็วมากๆ ครับ
ไม่ว่าแบบไหนก็เหอะ
คืออะไรเหรอครับ :25:
ถ้าแค่อ่านแล้วดู จะยากครับ
แต่ถ้าลองทำ จะง่ายครับ :12:
ลองก๊อปส่วน sql ไปรันเล่นๆเองก็ได้ครับ แล้วค่อยๆเปลี่ยนเล่นเอาเองทีละนิดๆ :27:
มาเก็บความรู้ ส่งความรู้คืนอาจารย์หมดตอนสอบ
อ่านแล้วมึนตามครับ :28:
ปกติจะ create ใน PHPmyAdmin
ใช้แค่ insert update delete select :42:
ส่วนฟังค์ชั่นต่างๆ ลอกหนังสือเอา
จำได้มั่ง ไม่ได้มั่ง
คำเตือน: กระจู๋นี้ร้างมากว่า 120 วันแล้วนะ
ตั้งสติก่อนขุดกระจู๋นะจ๊ะ :47:
มีคำถามครับ
ถ้าทำ web app ภาษาไหนเข้าถึง mysql ได้ง่ายๆ บ้างครับ
แบบว่ามี wrapper (เขาเรียกแบบนี้รึเปล่า) หรือ function ของภาษานั้นๆ
ที่ไม่ต้องมาใช้ภาษา sql ล้วนๆ ทั้งหมด
อาจจะย่อมาแค่ชื่อ database หรือ table แล้วก็คำค้นอะไรอย่างนี้หน่ะครับ
เคยเห็นแต่ php เขียนเป็น function อ่ะค่ะ
ประมาณว่าให้ตัวแปรส่งค่ามาแต่ชื่อ table และก็ส่วนของเงื่อนไข
(กรณีเป็น function ที่ใช้คำสั่ง select)
ก็จะประมวลผลแล้ว return ค่าออกมาให้เป็น array หรือจะให้แสดงค่าเลยก็ได้แล้วแต่จะเขียนออกมา
แต่ละคำสั่ง sql อย่าง select, insert, update, delete
ก็ไม่ได้อยู่ใน function เดียวกันอ่ะค่ะ (พี่โอ้เอ้น่าจะเคยเห็น)
แต่ถ้าเป็นนอกเหนือจากนี้ คิดไม่ออกเหมือนกันอ่ะค่ะ
มีตัวนึงมาแนะนำครับ
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)
ขอบคุณครับ ขอตามเข้าไปดูก่อน
ใครมีตัวอื่นแนะนำอีกเชิญได้ครับ :46:
ถ้าของ 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 ด้วยครับ
่
javahttp://www.javaskyline.com/database.html
.nethttp://sharptoolbox.com/categories/object-relational-mappers
ขอบคุณครับ :32:
ruby ก็ได้นะครับ
เห็นเรียกแค่ find(name:=>"a") ประมาณนี้
ครับ ใน 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
php เขียนเป็นออปเจ็ค ก็ง่ายดีนะพี่โอ้เอ้
อ้างคำพูดจาก: 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
อ้างคำพูดจาก: WuTtY เมื่อ 13 ส.ค. 2008, 15:48 น.
แปล: sub นรก กำลัง 2
เลือก ผลรวม(พื้นที่_ชาย_ประชากร) + ผลรวม(พื้นที่_หญิง_ประชากร) ในฐานะ ประชากร
จาก ทีบีแอล_พื้นที่ โดยที่ รัฐ_ไอดี อยู่ใน (
เลือก รัฐ_ไอดี จาก ทีบีแอล_รัฐ โดยที่ ประเทศ_ไอดี อยู่ใน (
เลือก ประเทศ_ไอดี จาก ทีบีแอล_ประเทศ โดยที่ ประเทศ_ไอดี = :04:
ว้าว กำลังเรียนอยู่เลยค่ะ เป็นประโยชน์มาก ขอบคุณค่ะ :45:
แต่ทำไมรูปมันไม่ขี้นล่ะคะ
กำลังเรียนอยู่เลย
ไว้ค่อยมาหาความรู้
ขุด :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 คุณด้วยยยยยยย
INNER JOIN ต่างจาก LEFT JOIN หรือ RIGHT JOIN ยังไงครับ :09:
ปกติผมใช้ LEFT JOIN ตลอดเลย
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:
ถ้าใส่
ตารางแรก left join ตารางสอง on (ตารางแรก.แผนก = ตารางสอง.รหัส)
อย่างงี้ก็ได้ผลแบบ inner รึเปล่าครับ ?
อ้างคำพูดจาก: แอนค่ะ เมื่อ 16 ก.พ. 2009, 22:09 น.
จริงๆตัวอย่างยังไม่ค่อยดีเท่าไหร่
แต่ไม่ค่อยมีเวลาอธิบายแล้ว คงไม่งงเนอะ :40:
:05:/ งงครับ
เดี๋ยวมีเวลาจะอธิบายใหม่นะ :30: :05a:
จ้ะ :30:
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:
คุยอะไรกัน :30:
select * from ... where ... โลดด. .ด . ด :56:
เคยเจอ SQL ที่ทำงานเก่า
query เดียว ยาวมากกกก ลองก๊อบมาใส่ word ได้เกือบ 2 หน้า :30:
:07: ขอบคุณพี่เจนมากๆ ครับ :46:
ในที่สุดก็เข้าใจ..
ว่าแต่ทำไม inner join มันได้ผลลัพธ์แค่นั้นอะครับ?
เอ๊ะ หรือว่า เพราะ sex_id ไม่มีในตาราง sex ครับ?
อ้างคำพูดจาก: นายก่อ เมื่อ 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
** ดูในเงื่อนไขดี ๆ อ่ะจะจับจุดได้จ้ะ
:07: อ๊ะ มองข้าม..
ขอบคุณครับๆๆ :46:
บวกให้พี่เจนกะพี่กวางครับ :42:
นั่นแหละๆ แบบที่พี่เจนกับกวางอธิบายเลย :33:
เคลียร์เลยครับพี่เจน :12:
อย่างงี้ที่ผมเขียนไป มิน่าถึงมี row เกินที่ที่มันควรจะเป็น (เลยแก้ปัญหาเฉพาะหน้าด้วยการใช้ WHERE ดัก)
ต้องเปลี่ยนมาใช้ INNER แล้ว
ขอบคุณมากครับ :46:
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
ใครก็ได้ช่วยหน่อยนะคะ เพราะว่าสร้างเว็บไม่เป็นค่ะท่าน... :02:
อ้างคำพูดจาก: สตอเบอร์รี่จัง เมื่อ 27 เม.ย. 2009, 14:00 น.
ใครก็ได้ช่วยหน่อยนะคะ เพราะว่าสร้างเว็บไม่เป็นค่ะท่าน... :02:
:34: สร้างเว็บไม่เป็น แล้วมันเกี่ยวอะไรกับ SQL เหรอครับ
สับสนกะ MySQL แน่ๆเลยครับ
แอบมาเชียร์เล็กนิ่มนิสนึงค่ะ
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 ยังจำเป็นยิ่งกว่าจำเป็นด้วยมั้งคะ
ที่ไหนสอนมาครับ MS SQL Express เป็น OpenSource เนี่ย
= ='
ถ้า opensource แปลว่า ใช้ฟรี มันก็โอนะ :47:
ที่นี่แหละค่ะ แค่ยังไม่ได้แจก source code ซึ่งยังไงเล็กนิ่มคงไม่แจกมั้งคะ
แต่ก็อนุญาติแจกจ่ายฟรี ก็พอเรียกได้ว่า open source ได้อยู่มั้งคะ
ถ้าเทียบกับ mySQL นั่นก้อแจกแค่ตัว community server มากกว่านั้น
เค้าก้อไม่แจกแล้ว กระนั้นก็ยังเรียก mySQL ว่า opensource ไม่ใช่หรอคะ
ก้อคงสอนกันมายังงี้แหละค่ะ
ถ้าไม่ได้แจก source จะเรียกว่าเป็น open source ไม่ได้น่ะครับ ต้องเรียกว่า closed source
ถึงแม้ว่าจะให้ใช้ฟรีก็เถอะ
ซึ่งก็มีอีกหลายๆ ศัพท์ที่หมายถึงให้ใช้ฟรี เช่น
freeware, shareware
:55:
opensource กับการอนุญาตให้ใช้ฟรี ไม่เหมือนกันนะจ๊ะ
เป็นคนละความหมายกันและไม่สามารถใช้แทนกันได้ :12:
//อ้าว เอตัดหน้า
รับทราบค่ะต่อไปจะเรียกใช้ให้ถูก ขอบคุณมากค่ะ
:12:
อ้างคำพูดจาก: พราว (ก็พราวแหละ) เมื่อ 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 ที่สามารถหาวันและเวลาที่น้อยที่สุด ไหมคะ
ขอความกรุณาผู้รู้ทุกท่านด้วยนะคะ
ต้องใช้ในงานโปรเจคจบคะ
:46:
SELECT *
FROM `invoice`
ORDER BY time
LIMIT 1
ORDER BY ใช้เรียงลำดับ โดย default คือ ASC (ascending เรียงจากน้อยไปมาก)
LIMIT จำกัดจำนวน record ที่ query ได้
ไม่รู้ว่าจะตรงกับความต้องการรึเปล่านะ :40:
1 --> 2011-03-20 13:00:30
2 --> 2011-03-20 13:00:05
ใช้ ORDER BY MIN( DATE),MIN(TIME)
แล้ว
ข้อมูลหมายเลข 1 มันออกมาก่นอนะคะ
แทนที่จะได้ข้อมูลหมายเลข 2 เพราะได้บันทึกข้อมูลมาก่อน
ไม่ทราบว่า ทำถูกแล้วหรือว่าคิดส่วนไหนผิดคะ
อ้างคำพูดจาก: 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 เพราะได้บันทึกข้อมูลมาก่อน
ไม่ทราบว่า ทำถูกแล้วหรือว่าคิดส่วนไหนผิดคะ
ขอบคุณนะคะ
ตอนนี้หาทางแก้ได้แล้วคะ
มาแอบดู ไม่มีใครสอนต่อแล้วเหรอ
อ๊ะ กำลังเรียนตัวนี้เลย เทอมโปรเจคมีที่พึ่งพิงแล้ว ปาบปื้ม :25: :25:
ค่าสอนสี่แสน
แลกกะค่าอิลัสนะ :47:
เรากำลังจะทำ ใบสมัครออนไลน์
กำลังคิดว่าจะทำเองหรือจะจ้างทำดี
ใบสมัครอะไรอ้ะ ใช้ google doc เล้ย :27:
google doc แล้วไงต่อพี่เจน
พอคนเข้ามากรอก แล้วมันส่งข้อมูลเข้าเมลเราได้เลยเหรอ
ขอเบิ้ลนะ
คือเราทำใบสมัครออนไลน์มาแล้ว มัน echo ไม่ได้ (ที่เครื่องนี้ เครื่องอื่นไม่มีปัญหา)
1. มันต้องไปตั้งค่าอะไร ที่ไหน หรือใน php.ini ไรแบบนี้รึเปล่า
หรือว่าทำอะไรมั่วไปรึเปล่า
2. ถ้าทำเสร็จแล้ว จะทำให้ มีการดึงข้อมูล(คนที่เพิ่งสมัครมา) แสดงเป็น pdf แล้วส่งเข้าเมล
มีขั้นตอน(ย่อๆ) ยังไงบ้าง คืออ่านใน fpdf แล้วไม่เข้าใจ
หรือว่าเราต้องทำให้มัน echo ออกมาให้ได้ก่อน แล้วถึงจะไม่งง
* แนบไฟล์มาให้ Download คลิกที่นี่ (http://file1.uploadfile.biz/i/EXENMEIIMEEEDZ)
ข้อ 1 มีตัวอย่าง code มั้ยครับ
แนบมาแล้วจ๊ะ (เดี๋ยวนี้แนบไฟล์ไมไ่ด้แล้วเหรอ)
เล่นบนมือถือ เปิด rar ไมทได้ T_T
เอาแค่บรรทัดที่สั่ง echo อะครับ
<?php
echo "photo= $photo
";
echo "xname=$xname
";
echo "surname=$surname
";
?>
ตัวแปร ถ้า submit มาจาก formต้อง get ค่ามันก่อนนะครับ
$photo =$_POST['photo'];
$xname =$_POST['xname'];
$surname = $_POST['surname'];
แล้วค่อยสั่ง echo
ที่ยาวๆ มันคือแบบนี้
<?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
";
?>
<?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";
?>
ลองเอาขึ้นโฮส มันทำได้แหละ
แต่ในเครื่องเหมือนเดิม
:05:
เบิ้ล อีกที
มันเป็นแบบนี้เลย
(http://img3.f0nt.com/04/9b4b0aa6bbbe3e714569a6042bb7b7de.jpg)
:48:
ลืมปิด tag อะไรซักอย่างแหละ
แต่มันเป็นหลายไฟล์เลยนะ
php.ini แก้ short_open_tag =On
หรือไม่ก้แก้ไฟล์ ตรงไหนที่เป็น <? เฉยๆ แก้เป็น<?php ให้หมด
อ้างคำพูดจาก: Pix เมื่อ 04 ก.ค. 2011, 01:06 น.
เบิ้ล อีกที
มันเป็นแบบนี้เลย
(http://img3.f0nt.com/04/9b4b0aa6bbbe3e714569a6042bb7b7de.jpg)
:48:
ต้องเปิดผ่าน url http://localhost (http://localhost)
เปิดไฟล์ php ตรงๆ ผ่าน browser แบบนี้มันไม่ได้อยู่แล้ว
เออ :30: เพิ่งเห็น url (เมื่อกี้ตอบผ่านมือถือ ไม่ทันสังเกค)
เปิดใน localhost มันกลายเป็นหน้าว่างๆ ไปเลยแหละ
ลองเปลี่ยน output เป็นแบบอื่นๆ แล้ว ก็ไม่ต่างกัน
แล้วมันได้สร้างไฟล์ report.pdf ให้รึเปล่า
ถ้าสร้าง เนื้อหา/รูปแบบ ตรงตามที่กำหนดรึเปล่า
มันไม่สร้าง
ใส่อันนี้ไว้บนสุด แล้วดูว่ามันมี error อะไรออกมาบ้าง
error_reporting(E_ALL);
ลองเช็คว่าไฟล์เป็น UTF-8 without BOM รึเปล่าด้วยนะ
ถอดใจแล้วอ่ะ จ้างคนอื่นทำละ
ไว้เค้าทำเสร็จแล้วจะเอามาแกะดู
ขอบคุณทุกคนคราบบบบบ
ขออนุญาตขุด
ขอความช่วยเหลือครับ
คือจะเพิ่ม record ในตาราง ที่มี field หนึ่งเป็น DATE
อยากจะใส่ Field นี้ด้วยวันที่ที่เพิ่มไปเรื่อยๆ จากวันที่กำหนด จนถึงสิ้นปี
มีใครพอจะเขียนเป็น SQL ให้ได้บ้างครับ :46:
ตูลืม SQL ไปเกือบหมดแล้ว :05: