join table แล้วระบุฟิวล์ IDของ table1 ไม่ได้กลายเป็น IDของ table2 ที่มาjoinค่ะ

เริ่มโดย ioff, 30 เมษายน 2009, 12:46:53

หัวข้อก่อนหน้า - หัวข้อถัดไป

0 สมาชิก และ 1 ผู้มาเยือน กำลังดูหัวข้อนี้

ioff

คือ เขียน sql ไว้ว่า
"select * from table1 inner join table2 on(table1.tid=table2.id) order by table1.id desc limit 0,5"
จากนั้นก็ทำการ query  แล้วก็ fetch array  $re=mysql_fetch_array($query);

แล้วทีนี้ปัญหาก็เกิด เมื่อ ต้องการระบุ ค่า ID ของตารางที่1 โดยตัวแปรarray ที่ได้ว่า $re[id] แต่กลับให้ค่าID ของตารางที่2 มาแทน
(ซึ่งตารางทั้ง1และ2 จะมีฟิวล์ ID  ทั้งสองตาราง )

เลยลองแก้ไขเป็น $re[table1.id] ก็กลายเป็นค่าว่าง  ..กรณีนี้ต้องทำยังไงดีค่ะ    ถึงจะสามารถเรียก ID ของตาราง1 ที่ join มาได้
จำได้ว่า เคยเรียกใช้แบบนี้แล้วได้นะ  แต่ทำไมคราวนี้ไม่ได้ก็ไม่รู้    เลยมึนค่ะ ตอนนี้   ...รบกวนช่วยแนะนำ ชี้แนะด้วยนะค่ะ   :-*


www.thaihoro.co.cc

deen05

ก็เขียนถุกแหละนะ

table1.tid=table2.id
กำหนด ฟิด ของ table1 ที่จะ join กับ table2.id ผิดอะเปล่า :-\ เพราะเห็นเป็น table1.tid

ioff

อ้างถึงจาก: deen05 ใน 30 เมษายน 2009, 13:04:45
ก็เขียนถุกแหละนะ

table1.tid=table2.id
กำหนด ฟิด ของ table1 ที่จะ join กับ table2.id ผิดอะเปล่า :-\ เพราะเห็นเป็น table1.tid

ใช่ค่ะคำสั่ง sql อ่ะถูก แต่ อย่างกรณ๊นี้ ทั้งสองตารางมีฟิวล์ ID เหมือนกัน ซึ้งเมื่อไป fetch array แล้วทำการอ้างถึงอ่ะค่ะ มันจะให้ค่า ID ของตารางที่เราไป join ไม่ใช่ตารางหลักที่เรา select

ทำไงต่อดีค่ะ

www.thaihoro.co.cc

payu


อ้างถึง
select *
from table1 inner join table2 on (table1.tid=table2.id)
order by table1.id desc limit 0,5

เหมือนว่า table1 มีทั้ง id และ tid

1. เลือก field เฉพาะที่จำเป็น ถ้าไม่ต้องใช้ t2.id (ดีกว่า)

select t1.id, t1.name, t2.title
from table1 t1 join table2 t2 on t1.tid=t2.id
order by t1.id desc
limit 0,5

$r['id']

2. ระบุ alias ให้ field

select t1.id as t1id, t1.*, t2.id
from table1 t1 join table2 t2 on t1.tid=t2.id
order by t1.id desc
limit 0,5

$r['t1id']

[direct=http://www.facebook.com/iipayu]payu on facebook[/direct]

ioff

อ้างถึงจาก: payu ใน 30 เมษายน 2009, 14:30:14

อ้างถึง
select *
from table1 inner join table2 on (table1.tid=table2.id)
order by table1.id desc limit 0,5

เหมือนว่า table1 มีทั้ง id และ tid

1. เลือก field เฉพาะที่จำเป็น ถ้าไม่ต้องใช้ t2.id (ดีกว่า)

select t1.id, t1.name, t2.title
from table1 t1 join table2 t2 on t1.tid=t2.id
order by t1.id desc
limit 0,5

$r['id']

2. ระบุ alias ให้ field

select t1.id as t1id, t1.*, t2.id
from table1 t1 join table2 t2 on t1.tid=t2.id
order by t1.id desc
limit 0,5

$r['t1id']




แก้ปัญหาตามวิธีที่ 1 ได้แล้วนะคร๊า...ขอบคุณมากเลย    ได้ ความรู้ เพิ่มขึ้น อีกอย่างแล้วค่ะ ทีนี้  :'(

www.thaihoro.co.cc