Isriya Paireepairit / mk / markpeak
A Thai tech geek. Co-founder of Blognone and SIU. Blogging on almost everything.
สมัยเรียนเป็นเด็กสาย 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
Comments
jittat
15 February, 2007 - 23:40
Permalink
แล้วถ้าเข
แล้วถ้าเขียนตรง ๆ แค่
select * from x,y,z where x.a = y.a and z.a = x.a and (condition)
จะได้หรือเปล่า?
น่าจะได้นา หรือว่ามันต่างกันที่ไหนสักแห่ง?
deans4j
15 February, 2007 - 23:53
Permalink
select * from y,x,z where
select * from y,x,z where y.a=x.a and x.a=z.a
เอ๋
16 February, 2007 - 00:19
Permalink
วันก่อนเห
วันก่อนเห็น SQL ของเพื่อน Join 4 Table ยาวเกือบ ครึ่ง A4
งานกรรมกร!!!
mk
16 February, 2007 - 07:31
Permalink
jittat:
jittat: เข้าใจว่าไม่ต่างกันครับ
plynoi
16 February, 2007 - 09:14
Permalink
jittat :
jittat : ไม่ต่างกันนะ แต่ inner join มันดูสวยกว่ามั้ง
mk : อ้อ ไม่ควร select * นะ รู้สึกมันจะช้ากว่าใส่ชื่อ field ไปตรงๆ
mk
16 February, 2007 - 09:23
Permalink
plynoi:
plynoi: อันนี้ตัวอย่าง syntax น่ะครับ ไม่รู้จะใส่อะไรก็ใส่ * ไปก่อน
Oakyman
16 February, 2007 - 09:39
Permalink
ไม่ได้แตะ
ไม่ได้แตะ SQL มานานแล้วแฮะ
PaePae
16 February, 2007 - 10:35
Permalink
inner join กับ comma
inner join กับ comma (,) ไม่ต่างกัน
แต่ถ้าเกิดใช้ร่วมกับพวก xxx join ... on ชนิดอื่น ๆ
ต้องใช้ inner join ไม่งั้นมันจะตีความไม่ถูก เพราะ precedence ไม่เท่ากัน
PaePae
16 February, 2007 - 11:07
Permalink
แป่ว
แป่ว กลายเป็นสองโพสต์เลย
ตอนแรกมันไม่ขึ้นอ่ะ นึกว่ามี xxx แล้วโดนแบน :-P
iPAtS
16 February, 2007 - 14:47
Permalink
ผมไม่ค่อย
ผมไม่ค่อยใช้ syntax แบบ inner join
เหตุผลก็คือ.. จำไม่ได้ เหอๆ
จับคอมม่าแล้วใส่เท่ากับในแวร์โลด
แต่เคยดูคิวรี่ของพวก CMS แบบว่า join กันสนุกสนานมาก
ทั้ง join ทั้ง subquery -"- หึหึ
Sirn
16 February, 2007 - 18:42
Permalink
แต่เคยดูค
แก้ทีก็นั่งร้องไห้กันที...
keng
16 February, 2007 - 19:46
Permalink
ไม่ถนัก join
ไม่ถนัก join เหมือนกัน เพราะจำ syntax มันไม่ได้
แต่ก็ถ้าในจับ x=y ใน where clause เวลา join กันเยอะๆ ก็งงอีก
แก้ด้วยการไม่ทำ :P
jittat
16 February, 2007 - 21:37
Permalink
เคยใช้ join
เคยใช้ join ตอนที่เป็น outer join หรืออะไรประมาณนี้ ต้องใช้ตอนทำอะไรไม่รู้... รู้สึกว่าจำเป็น (แต่จำไม่ได้แฮะ)
plynoi
16 February, 2007 - 21:47
Permalink
แหะๆ
แหะๆ ปกติผมชอบใช้ inner join มากกว่า แปลกคนวุ้ย
TiD
17 February, 2007 - 00:20
Permalink
plynoi:
plynoi: เหมือนกันแฮะ
พี่ไท้
17 February, 2007 - 11:25
Permalink
ดูเหมือนว
ดูเหมือนว่าพวกเราจะชอบเรื่องทางเทคนิคกันนะครับ เข้ามาคอมเม้นท์กันใหญ่เลย ^-^
wavezaa
13 February, 2008 - 06:01
Permalink
แบบนี้ดีก
แบบนี้ดีกว่า อ่านง่ายกว่ากันเยอะ
SELECT *
FROM y INNER JOIN x
ON x.a=y.a
INNER JOIN z
ON x.a = z.a
WHERE condition
deen
4 February, 2009 - 15:49
Permalink
ขอบคุณครับ แนวที่ดีมากๆเลย
ขอบคุณครับ แนวที่ดีมากๆเลย