SELECT * FROM (
(
(
tbl_bbscomment
INNER JOIN tbl_member ON tbl_member.member_id = tbl_bbscomment.member_id
)
INNER JOIN tbl_item ON tbl_item.item_uid = tbl_member.bbsicon_id ###### ซ้ำ
)
INNER JOIN tbl_item ON tbl_item.item_uid = tbl_member.bbscolor_id ####### ซ้ำ
)
Code (SQL)
SELECT *
FROM tbl_bbscomment as bb
INNER JOIN tbl_member mb
ON mb.member_id = bb.member_id
INNER JOIN tbl_item im
ON im.item_uid = mb.bbsicon_id and im.item_uid = mb.bbscolor_id
ของ จขกท มันมีตาราง ซ้ำกัน 2 ตาราง มัน ก็จะอ้างอิง ผิดผลาด สร้าง alias เพื่อกำหนด การอ้างอิง
แต่ไม่จำเป็น ใส่ and เข้าไปแทน
โค๊ดเวลาสั่ง คิวรี่ ก็ควรตรวจสอบด้วยว่า มันคิวรี่ สำเร็จแต่ไม่พบ result หรือ คิวรี่ผิดผลาดมีเออเร่อร์
ถ้ามันไม่ได้ มันก็แสดงว่า 2 field bbsicon_id กับ bbscolor_id นั้น ไม่มีสักเรคคอร์ดที่เหมือนกันเลย
ลองทดสอบ ตาราง member ก่อนเลยว่าข้อมูลมัน เหมือนกัน มีหรือเปล่า
select * from tbl_member where bbsicon_id = bbscolor_id
ดูสิว่า 2 field นี้มีเหมือนกัน ไหม ถ้ามันไม่เหมือนก็ ใช้ inner ไม่ได้ มันควรจะใช้ left join หรือ right join หรือเปล่า
Code (SQL)
SELECT bb.*,mb.*
,im1.fldname as xxx, im2.fldname as yyy #บันทัดนี้ field มีชื่อซ้ำกัน ข้อมูลต่างกันต้องกำหนด alias name
# ไม่อย่างนั้นข้อมูลมันจะหายได้ ถ้าเรียกใช้งานแบบ assoc หรือ object
FROM (
tbl_bbscomment as bb
INNER JOIN tbl_member mb ON mb.member_id = bb.member_id
)
left JOIN tbl_item im1 ON im1.item_uid = mb.bbsicon_id
left JOIN tbl_item im2 ON im2.item_uid = mb.bbscolor_id
ลองทดสอบ ตาราง member ก่อนเลยว่าข้อมูลมัน เหมือนกัน มีหรือเปล่า
select * from tbl_member where bbsicon_id = bbscolor_id
ดูสิว่า 2 field นี้มีเหมือนกัน ไหม ถ้ามันไม่เหมือนก็ ใช้ inner ไม่ได้ มันควรจะใช้ left join หรือ right join หรือเปล่า