พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / ช่วยดู code ให้หน่อยครับ
tik
tik
Fri 11 Aug 2006 00:01:28

$sql = "SELECT DISTINCT(s.id_sub), t.id_teach, s.name_sub , t.name_teach  FROM register r, subject s , teacher t   WHERE r.id_sub = s.id_sub AND id_std LIKE '$ss_Pwd' AND t.id_teach = r.id_teach  ;";

-------------------------------------------------------------------------------------------

-DISTINCT มีไว้ทำอะไรครับ แล้วทำไมต้องวงเล็บ (s.id_sub) อันเดียวครับ

-ทำไมชื่อคอลัมถึงนำหน้าด้วย t.    s. ครับ ผมดูในฐานข้อมูลก็ไม่ให้จะมี

-------------------------------------------------------------------------------------------
$result = mysql_db_query($ss_DBname, $sql ); 

while ($dbarr = mysql_fetch_array($result)) {
$ss_id_sub = $dbarr[id_sub];
$ss_id_teach = $dbarr[id_teach];
$ss_name_sub = $dbarr[name_sub] ;
$ss_name_teach = $dbarr[name_teach];

-------------------------------------------------------------------------------------------

$dbarr = mysql_fetch_array($result) มีไว้สำหรับถ่ายค่าจากตารางในตัวแปรresult แล้วเก็บไว้ที่ตัวแปร dbarr ในรูปแบบ array แล้วมี index เป็นชื่อ column ใช่หรือเปล่าครับ

ถ้าไม่ใช่กรุณาชี้แจงด้วยครับผม

ขอขอบคุณครับ

Administrator
Fri 11 Aug 2006 00:28:28
DISTINCT ใช้คู่กับ SELECT เพื่อให้ query เฉพาะข้อมูลที่ไม่ซ้ำกันครับ
ส่วนที่ DISTINCT(s.id_sub) เพื่อระบุว่าให้เลือกเฉพาะ filed is_sub ที่ไม่ซ้ำกันเท่านั้น

t, s นั้นถ้าดูใน FROM แล้วจะเห็นว่ามีการ casting ครับคือการตั้งชื่อให้สั้นลงครับ เช่น teacher t (ถ้าเขียนเต็มๆจะเขียนในรูปแบบ teach AS t) โดย AS นั้นจะใส่ก็ได้หรือไม่ก็ได้ครับ ส่วน s ก็มาจาก subject

mysql_fetch_array() จะเป็นการ fetch ข้อมูลที่ได้มาจาก result resource ซึ่งได้จากการ query อีกทีครับ โดยจะมี require parameter คือ result resource และจะมี option parameter เป็นรูปแบบการ fetch ครับมี 3 ค่าคือ
MYSQL_ASSOC เพื่อให้การ fetch คืนค่ามาในรูปแบบ Associative array (มี index ของ array เป็นชื่อ field)
MYSQL_NUM เพื่อให้การ fetch คืนค่ามาในรูปแบบ array ธรรมดา มี index เป็นตัวเลข
MYSQL_BOTH เพื่อให้การ fetch คืนค่ามาเป็นแบบ array ธรรมดาและ Associative array (ใช้ resource เพิ่มไปด้วย)
โดยถ้าไม่ระบุ option parameter นั้นจะมีการ fetch ในรูปแบบ MYSQL_BOTH
tik
tik
Fri 11 Aug 2006 21:53:43

ขอบคุณมาก ๆ ครับ

tik
tik
Fri 11 Aug 2006 22:04:22

มีอีกนิดครับ

(s.id_sub), t.id_teach, s.name_sub , t.name_teach

ยังไม่ค่อยเข้าใจอะครับ

ตรงที่ t.   s.  t. น่ะครับ

และอันแรกมีวงเล็บ แต่ต่อมาไม่มีวงเล็บ! มันแตกต่างกันไหมครับ?

WHERE r.id_sub = s.id_sub AND id_std LIKE '$ss_Pwd' AND t.id_teach = r.id_teach  ;";

หมายความว่ายังไงอะครับ

รบกวนด้วยนะครับ

เพิ่งศึกษา php ได้ไม่กี่วันเอง ดูโคดตรงนี้ไม่ออกก็เลยทำความเข้าใจอันต่อไปไม่ได้ครับ

Administrator
Sat 12 Aug 2006 00:01:06
...FROM register r, subject s , teacher t  WHERE...
ลองอ่านตรงนี้ครับ ตามที่ผมได้แจ้งไว้แล้วว่าเป้นการ Casting ครับ

ส่วนที่ (s.id_sub) นั้นมันมาจาก DISTINCT(s.id_sub) เพื่อระบุว่าต้องการใข้ select เลือก record ที่ id_sub นั้นไม่ซ้ำกันเลย ต้องการเพียง field นี้เพียง field เดียวที่ไม่ซ้ำกันครับ

โดยปกติมักจะเห็น SELECT DISTINCT field1, field2, ... อันนี้คือตรวจสอบว่า ทุก record จะต้องมีทุก field ไม่ซ้ำกันทั้ง record ครับ เช่น
|    day    |    name   |
------------------
|    mon   |    นาย ก. |
|    tue     |    นาย ก. |
ถ้า SELECT DISTINCT (name), day จะได้ record แรกเพียง record เดียว
ถ้า SELECT DISTINCT name, day จะได้ทั้ง 2 record ครับ

ส่วน WHERE Clause นั้นก็ใช้ตัวแปรที่ได้ทำการ Casting ไว้นั่นล่ะครับ เช่น r.id_sub ก็คือ register.id_sub, s.id_sub ก็คือ subject.id_sub (ตั้งใจจะถามตรงนี้หรือเปล่าครับ ถ้าไม่ใช่กรุณาถามใหม่แล้วกัน)

ทั้งหมดนี้ไม่ใช้ไวยกรณ์ของภาษา PHP ครับเป็นไวยกรณ์ของ SQL92 หาอ่านได้ทั่วไปครับเป็นมาตรฐานที่แต่ละ RDBMS จะต้องรองรับคำสั่งที่ประกาศเป็นมาตรฐานครับ
tik
tik
Sat 12 Aug 2006 21:19:22

WHERE r.id_sub = s.id_sub AND id_std LIKE '$ss_Pwd' AND t.id_teach = r.id_teach  ;";

แล้ว Like ต่างจาก = ยังไงครับ

= ของ sql คือ equal  ใช่ไหมครับ มันไม่เหมือนกับ php ใช่ไหมครับ

Administrator
Sat 12 Aug 2006 22:06:03
ใน SQL เครื่องหมาย = การใช้งานเหมือน PHP ครับ คือต้องเหมือนกัน
ส่วน LIKE นั้นเป็นการเปรียบเทียบครับ คล้ายการการใข้งาน = แต่ว่าสามารถใส่ wildcard เพื่อการเปรียบเทียบในลักษณะ pattern ได้ครับ อ่านเพิ่มเติมได้ที่
http://www.techonthenet.com/sql/like.php
http://www.1keydata.com/sql/sqllike.html
http://www.sql-tutorial.net/SQL-LIKE.asp

น่าจะพอมองเห็นภาพนะครับ
tik
tik
Sun 13 Aug 2006 22:53:58
ขอบคุณครับสำหรับทุก ๆ คำตอบ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login