 |
ใช้คำสั่ง if แบบนี้ จะดึงข้อมูลออกมายังไง ครับ เพราะ ดึงข้อมูลมา สอง ครับ แล้วเอาข้อมูลทั้งสองมาเทียบกัน ถ้า ตรงกันไม่ต้องดึงมาโชว์ ถ้า ไม่ตรงกันให้ดึงมาโชว์ |
|
 |
|
|
 |
 |
|
ลองดูพวก NOT EXISTS ครับ
|
 |
 |
 |
 |
Date :
2014-06-15 11:33:22 |
By :
mr.win |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เราสามารถเขียน ควบเป็น statement เดียวกันได้ครับ
สิ่งที่ต้องการ คือ บี ที่อยู๋ใน เอ ที่ไม่เหมือนกับ ซี่ ที่อยู่ใน เอ ถูกต้องไหมครับ
ถ้าใช่ ก็สามารถ join กัน 3 table ได้เลยครับ
select a.id, b.id, c.id from a left join b on a.id=b.id left join c on a.id=c.id
จากการ ใช้ statement นี้เราจะได้
a.id = x, b.id = x, c.id = x // กรณึ่ที่ มีค่าซ้ากัน
หรือ
a.id=x, b.id=x, c.id=null // กรณีที่ เอ เท่ากับ บี
หรือ
a.id=x, b.id=null, c.id=x // กรณีที่ เอ เท่ากับ ซี
หรือ
a.id=x, b.id=null, c.id=null // กรณีที่ เอ ไม่กับอันไหนเลย
สิ่งที่เราต้องการ คือ กรณีที่ 2 และ 3 เราสามารถใส่ where clause ได้ดังนี้
where b.id <> c.id
เพราะ กรณีที่ 1 และ 4 b.id=c.id ทั้งคู่
|
 |
 |
 |
 |
Date :
2014-06-15 17:13:01 |
By :
Chaidhanan |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
SELECT * FROM a
WHERE NOT a.a_id IN (SELECT b_id
FROM b) AND NOT a.a_id IN (SELECT c_id FROM c)
แก้ไปแก้มา ได้วิธีนี้ ครับ ได้แล้ว ขอบคุณมาก ครับ ดึงข้อมูลเร็วกว่าการ JOIN ครับ
|
 |
 |
 |
 |
Date :
2014-06-16 11:30:44 |
By :
rock_rock |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|