3 Tables INNER JOIN

สมัยเรียนเป็นเด็กสาย HPC ความรู้เรื่อง database เลยไม่เยอะเท่าไร มีตามตำราคือ 1 คอร์ส ซึ่งก็ได้มาเฉพาะความรู้พื้นฐานพวก all or none กับคำสั่งพื้นๆ ไว้เอาตัวรอดอย่างเช่น select, insert อะไรพวกนี้ อย่างอื่นสอบเสร็จก็ลืมหมด

วันนี้ดันต้องมา join ตาราง เป็น inner join ธรรมดาไม่มีอะไรพิสดาร เพียงแต่ไม่รู้ว่าถ้า join 3 ตารางแล้ว syntax มันเป็นไง ตัวอย่างในเว็บก็มีแต่โชว์ 2 ตาราง จะมั่วใส่ comma ไปก็คิดว่าไม่น่าใช่

สุดท้ายก็ได้รับความช่วยเหลือจาก sugree (อีกแล้ว) ไว้ครบปีสงสัยต้องเลี้ยงตอบแทนซักที

SELECT * FROM y INNER JOIN x ON x.a=y.a INNER JOIN z ON x.a = z.a WHERE condition

ถ้ากลัวงงก็ใส่วงเล็บครอบได้

SELECT * FROM (y INNER JOIN x ON x.a=y.a) INNER JOIN z ON x.a = z.a WHERE condition

Keyword:

Comments

แล้วถ้าเขียนตรง ๆ แค่

select * from x,y,z where x.a = y.a and z.a = x.a and (condition)

จะได้หรือเปล่า?

น่าจะได้นา หรือว่ามันต่างกันที่ไหนสักแห่ง?

select * from y,x,z where y.a=x.a and x.a=z.a

วันก่อนเห็น SQL ของเพื่อน Join 4 Table ยาวเกือบ ครึ่ง A4

งานกรรมกร!!!

jittat: เข้าใจว่าไม่ต่างกันครับ

jittat : ไม่ต่างกันนะ แต่ inner join มันดูสวยกว่ามั้ง

mk : อ้อ ไม่ควร select * นะ รู้สึกมันจะช้ากว่าใส่ชื่อ field ไปตรงๆ

plynoi: อันนี้ตัวอย่าง syntax น่ะครับ ไม่รู้จะใส่อะไรก็ใส่ * ไปก่อน

ไม่ได้แตะ SQL มานานแล้วแฮะ

inner join กับ comma (,) ไม่ต่างกัน

แต่ถ้าเกิดใช้ร่วมกับพวก xxx join ... on ชนิดอื่น ๆ
ต้องใช้ inner join ไม่งั้นมันจะตีความไม่ถูก เพราะ precedence ไม่เท่ากัน

แป่ว กลายเป็นสองโพสต์เลย
ตอนแรกมันไม่ขึ้นอ่ะ นึกว่ามี xxx แล้วโดนแบน :-P

ผมไม่ค่อยใช้ syntax แบบ inner join
เหตุผลก็คือ.. จำไม่ได้ เหอๆ

จับคอมม่าแล้วใส่เท่ากับในแวร์โลด

แต่เคยดูคิวรี่ของพวก CMS แบบว่า join กันสนุกสนานมาก
ทั้ง join ทั้ง subquery -"- หึหึ

แต่เคยดูคิวรี่ของพวก CMS แบบว่า join กันสนุกสนานมาก
ทั้ง join ทั้ง subquery -"- หึหึ

แก้ทีก็นั่งร้องไห้กันที...

ไม่ถนัก join เหมือนกัน เพราะจำ syntax มันไม่ได้

แต่ก็ถ้าในจับ x=y ใน where clause เวลา join กันเยอะๆ ก็งงอีก

แก้ด้วยการไม่ทำ :P

เคยใช้ join ตอนที่เป็น outer join หรืออะไรประมาณนี้ ต้องใช้ตอนทำอะไรไม่รู้... รู้สึกว่าจำเป็น (แต่จำไม่ได้แฮะ)

แหะๆ ปกติผมชอบใช้ inner join มากกว่า แปลกคนวุ้ย

plynoi: เหมือนกันแฮะ

ดูเหมือนว่าพวกเราจะชอบเรื่องทางเทคนิคกันนะครับ เข้ามาคอมเม้นท์กันใหญ่เลย ^-^

แบบนี้ดีกว่า อ่านง่ายกว่ากันเยอะ

SELECT *
FROM y INNER JOIN x
ON x.a=y.a
INNER JOIN z
ON x.a = z.a
WHERE condition

ขอบคุณครับ แนวที่ดีมากๆเลย