มีโจทย์ sql มาให้พวกพี่ คิดกานเล่นๆ ดูน้าาครับบ เป้าหมายคือ มี รหัสจาก ตาราง tb_pass เป็นตารางที่ใช้เก็บข้อมูลรหัส
Code (PHP)
เป้าหมายคือ มี รหัสจาก ตาราง tb_pass เป็นตารางที่ใช้เก็บข้อมูลรหัส ส่วน ตาราง tb_actf_reg เป็นตารางที่มีการนำ รหัสจากตาราง tb_pass ไปยืนยันการลงทะเบียน คืนๆ ผมต้องการให้มี การแสดงรหัส ที่ยังไม่มีการได้ใช้ลงทะเบียน ...... ของตาราง tb_pass อ่ะคับ พวกพี่ๆ ช่วยผมที่น้าาา
tb_pass
id_num , id_pass, name_pass_title
1 , 49472045 , ครั้งที่ 1
2 , 87939453 , ครั้งที่ 1
3 , 98059082 , ครั้งที่ 2
4 , 84439453 , ครั้งที่ 2
5 , 70039613 , ครั้งที่ 2
6 , 11059082 , ครั้งที่ 2
7 , 10065045 , ครั้งที่ 3
9 , 43239409 , ครั้งที่ 3
tb_actf_reg
id_actf , id_pass ,name_pass_title
1 , 98059082 , ครั้งที่ 2
2 , 84439453 , ครั้งที่ 2
3 , 70039613 , ครั้งที่ 2
*** คำตอบของข้อมูลจะแสดง ที่ตาราง tb_pass ออกมาเป่ง
6. , 11059082 , ครั้งที่ 2
เพียงค่าเดียว ที่ไม่ได้ถูกนำไปใช้งาน
"SELECT p.id_pass, p.name_pass_title
FROM tb_actf_reg AS a, tb_pass AS p
WHERE a.name_pass_title = p.name_pass_title
AND p.name_pass_title NOT IN ('ครั้งที่ 2') ";
อันนี้ผมเขียนขึ้นแต่ยังไม่ถูก อ่ะคับ พวกพี่ๆ ช่วยผมที นะคับบบTag : - - - -
Date :
2010-01-09 03:56:26
By :
i-nutz
View :
2079
Reply :
7
อ่ะนะ ตั้งนานแล้วไม่เห็นมีใครมาตอบ
ผมว่านะ โจทย์ที่ตั้งมาเนี่ย คงจะมาจากจินตนาการของผู้ที่ไม่ค่อยได้เขียนโปรแกรมเพื่อใช้งานจริง เพราะมันมีวิธีตรวจสอบที่ง่ายกว่านี้เยอะแยะ เป็นเรื่องพื้นๆ ด้วยซ้ำ (ผมไม่ได้ว่าคุณนะ ผมว่าคนตั้งโจทย์)
ผมไม่ได้ทำความเข้าใจกับโจทย์ที่ให้มากหรอกนะ แค่อ่านดูว่า ความต้องการของโจทย์นี้คือ เช็คว่ารหัสไหนยังไม่ได้ใช้ลงทะเบียน ก็ให้ดึงเอารหัสนั้นมาแสดง ...ถูกต้องป่ะ ก็โจทย์บอกยังงั้น
วิธีก็คือ ทำ field เพื่อเก็บสถานะการลงทะเบียนสิ หรือเก็บค่า วันเดือนปีที่มีการลงทะเบียน โดยตั้งค่า default เป็นค่าว่าง พออยากรู้ว่าอันไหนยังไม่ได้ลงทะเบียน ก็ไปดึงเอารหัสของรายการที่มี field นั้น เป็นค่าว่าง ส่วนอยากจะรู้ว่ารายการไหน ลงทะเบียนไปแล้ว ลงทะเบียนเมื่อไหร่ ก็ไปดึงเอาที่มันไม่ใช่ค่าว่างมา
ผมเข้าใจถูกป่าว
Date :
2010-01-09 14:50:01
By :
dekcom
ขอบคุณสำหรับคำตอบน้าาครับ นะคร๊าบ แต่มันไม่ใช่จินตนาการ อย่างที่คุณว่าหลอกคับ แต่มันคืนส่วนที่สามารถนำไปใช้งานได้จิงและเป็นหนึ่งในระบบของ project ของผม แล้วส่วนนี้ก้อเป็นส่วนที่แสดงข้อมูลของการออกรหัสของ ผู้ดูแลระบบ....และได้ทำการ ออกรหัสที่ได้จากการ generate รหัส ออกมาครั้งที่ 1 เป็นจำนวน 2 รหัส และ generate รหัส ออกมาครั้งที่ 2 เป็นจำนวน 4 รหัส แล้ว User ได้นำเอารหัส จากการ generate รหัส ออกมาครั้งที่ 2 ไปใช้งาน ไปแล้วจำนวน 3 รหัส ... ซึ่ง 3 รหัสนี้ admin ก้อสามารถเรียกดูการใช้งานได้ จาก ตาราง tb_actf_reg ที่ user ได้นำไปทำการลงทะเบียนแล้ว แต่ส่วนที่ยังไม่นำ รหัส ของการ generate รหัส ออกมาครั้งที่ 2 จะคงเหลืออยู่ 1 รหัส อันคือสิ่งที่โจทย์ต้องการครับ ( ก้อคือรหัสจากการ generate ครั้งที่ 2 ที่เก็บไว้ในตาราง tb_pass ที่ยังไม่นำไปใช้งานคงเหลืออยู่ 1 รหัสออกมาแสดง เนี่ยละครับ )
เพื่อให้ง่ายต่อการใช้งาน admin สามารถเปรียบรหัส ได้ว่า ข้อมูล ของการ generate รหัส ครั้งที่ 2 ของ ตาราง tb_pass ว่ามีรหัสส่วนไหนที่ยังไม่ได้นำไปใช้งาน
ซึ็งผมก้อเข้าใจขั้นตอนของโจทย์แล้วก้อไม่ได้ทำการจินตนาการของผู้ที่ไม่ค่อยได้เขียนโปรแกรมเพื่อใช้งานจริง หลอกนะครับ ซึ้งรูปแบบ ก้อมีการคิดแต่คำตอบที่ถูกต้องนี้ยัง ไม่สามารถนำมาขึ้นมาแสดงได้
ผมได้ลองทั้ง select ซ้อน select และ not in แล้วใช้หลักการของ minus ซึ้งข้อมูลที่แสดง ออกมา นั้นแสดงข้อมูล รหัสออกมาทั้ง การ generate รหัส ออกมาครั้งที่ 1 แต่จิงๆ โจทย์ ที่ต้องการก้อคือ เมื่อ admin ต้องการดูข้อมูลของส่่วนที่ยังไม้่ใช้งาน (เฉพาะ การออกรหัส ครั้งที่ 2 เพียงเท่านั้น) แต่คำตอบที่ได้นี้มีการแสดงรหัสของส่วนการออกครั้ง ต่างๆ ออกมาด้วย
Date :
2010-01-09 17:12:45
By :
i-nutz
คิดง่าย ๆ นะคะ รหัสที่ไม่ได้อยู่ในตาราง tb_actf_reg ก็คือรหัสที่ไม่ถูกใช้ใช่ไหม
ใช้ not in ก็น่าจะได้นะ อ่านโจทย์แล้วก็แอบงงแฮะ อิอิ
Date :
2010-01-09 20:58:34
By :
ultrasiam
ควรครับ บางทีคนอื่นอ่านโจทย์ก็คิดว่าคนตั้งกระทู้ จะเอาคำตอบจริงๆหรือตั้งให้คิดเล่นๆ(แบบปวดหัวๆ)
แซวเล่นนะครับ
Date :
2010-01-10 01:28:47
By :
panyapol
อ่านๆดูแล้ว จากคุณ Guest No.01 ตอบอ่ะผมว่าถูกนะ คือแค่เพิ่ม col flag ไปซักอันไว้ดูว่า password ไหนจ่ายออกไปแล้วบ้าง ง่ายเวลา query ตรวจสอบด้วย
Date :
2010-01-11 22:10:41
By :
salapao_codeman
Load balance : Server 05