ใช้ SQL RIGHT JOIN และ IN() EXISTS() หาข้อมูลที่ไม่มีใน ตารางที่สนใจ

SQL Knowledge ทั้ง sql มาตรฐาน หลักการออกแบบฐานข้อมูล ความสัมพันธ์ของ ตาราง Mysql , PGSQL, Oracle, MSSQL

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41359
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

ใช้ SQL RIGHT JOIN และ IN() EXISTS() หาข้อมูลที่ไม่มีใน ตารางที่สนใจ

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เงือนไข ต้องการรู้ว่า มี post_id อะไรที่ไม่ในอีกตาราง (phpbb_attachments)
คำอธิบายสิ่งที่ต้องการจาก SQL ด้านล่าง
ต้องการรู้ว่า post_id ในตาราง phpbb_posts อะไรที่ filed post_attachment=0
แต่มีข้อมูล post_id (post_msg_id อยู่ในตาราง phpbb_attachments)

แบบแรกใช้ RIGHT JOIN

โค้ด: เลือกทั้งหมด

SELECT p.* FROM phpbb_posts as p 
    RIGHT JOIN phpbb_attachments  a  ON p.post_id = a.post_msg_id 
WHERE
    p.post_attachment = 0
แบบที่ สอง ใช้ IN()

โค้ด: เลือกทั้งหมด

SELECT * FROM phpbb_posts 
					WHERE post_attachment =0 AND post_id IN ( SELECT post_msg_id FROM phpbb_attachments )
แบบที่สามที่จะให้ผลเหมือน แบบ แรกและแบบที่สอง
ทำได้โดยใช้ EXISTS() ลองคิดต่อกันดูนะครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 87