วันอังคาร, มีนาคม 10, 2552

Simple many to many

ช่วงนี้พยายามหาข้อมูลของ MySQL บังเอิญไปเจอสอง SQL นี้เข้า ในบทความเค้าบอกว่าผลลัพธ์ต่างกันอย่างไร

SELECT x.aid, x.bid, b.bdesc 
  FROM x LEFT JOIN b ON (b.bid = x.bid) 
  WHERE (x.aid = ‘whatever’)
A similar result may also be achieved using the following:
SELECT x.aid, x.bid, b.bdesc 
  FROM x, b 
  WHERE (x.aid = ‘whatever’) AND (b.bid = x.bid) 
The difference between these two SQL queries will only become apparent if an occurrence of table ‘B’ is missing for an occurrence of table ‘X’. With the first query all columns selected from table ‘B’ will be returned as empty. With the second query the effect will be that the occurrence of ‘X’ will be dropped from the selection.

ลองแปลดู ประมาณว่าถ้า table b ไม่เข้ากับเงื่อนไข * query แรกจะแสดง b.b_desc เป็นช่องว่าง แต่ * query ที่สองจะไม่แสดงทั้ง record ไปเลย

ที่มา tonymarston
blog comments powered by Disqus