ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน

เข้าสู่ระบบด้วยชื่อผู้ใช้ รหัสผ่าน และระยะเวลาในเซสชั่น

ThaiSEOBoard.comพัฒนาเว็บไซต์ProgrammingJoin Table เรียกข้อมูลแบบนี้ยังไง
หน้า: [1]   ลงล่าง
พิมพ์
ผู้เขียน หัวข้อ: Join Table เรียกข้อมูลแบบนี้ยังไง  (อ่าน 1521 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« เมื่อ: 26 พฤศจิกายน 2009, 10:15:54 »

(อาจจะเส้นผมบังภูเขาอ่ะนะ แต่พยายามอยู่พักนึงแระ ถามผู้รู้ดีกว่า)

เช่น ใน ตาราง Customer มีข้อมูล c_order_1, c_order_2, c_order_3

แล้วเอารหัสสินค้าใน c_order_1, c_order_2, c_order_3 ไปเรียกชื่อสินค้าในตาราง Product

จะ Join Table แบบไหนครับ

ลองแบบชื่อเดียวอ่ะออก
โค๊ด:
SELECT * FROM customer JOIN product ON customer.c_order_1 = product.name
แต่จะเขียนยังไงให้สามารถใช้ได้ทั้ง order_1, order_2, order_3 พร้อมกันเลย เพราะเวลาลองหลายชื่อพร้อมกันมัน error wanwan006
« แก้ไขครั้งสุดท้าย: 26 พฤศจิกายน 2009, 13:13:27 โดย Kizmo » บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 26 พฤศจิกายน 2009, 10:19:50 »

(อาจจะเส้นผมบังภูเขาอ่ะนะ แต่พยายามอยู่พักนึงแระ ถามผู้รู้ดีกว่า)

เช่น ใน ตาราง Customer มีข้อมูล c_order_1, c_order_2, c_order_3

แล้วเอารหัสสินค้าใน c_order_1, c_order_2, c_order_3 ไปเรียกชื่อสินค้าในตาราง Product

จะ Join Table แบบไหนครับ

ลองแบบชื่อเดียวอ่ะออก
โค๊ด:
SELECT * FROM customer JOIN product ON customer.c_order_1 = product.name
แต่จะเขียนยังไงให้สามารถใช้ได้ทั้ง order_1, order_2, order_3 พร้อมกันเลย เพราะเวลาลองหลายชื่อพร้อมกันมัน error

งง คำถามนิดๆ แต่อยากตอบ
โค๊ด:
SELECT * FROM customer,product WHERE customer.c_order_1 = product.name AND customer.c_order_2 = product.name AND customer.c_order_3 = product.name

ได้รึเปล่าไม่รู้นะ มั่วมาแหลกลาน
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
ioff
ก๊วนเสียว
*

พลังน้ำใจ: 5
ออฟไลน์ ออฟไลน์

กระทู้: 275



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 26 พฤศจิกายน 2009, 10:22:44 »

select * from customer inner join product on customer.code = product.code  

แล้วก็ วนรอบแบบไหนก็ได้ให้ครบทุกเรคคอร์ด ลองดูนะค่ะ  wanwan020
บันทึกการเข้า

Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #3 เมื่อ: 26 พฤศจิกายน 2009, 10:25:54 »

main idea คือ เอาข้อมูลหลายข้อมูลจากตาราง ลูกค้า ไปเรียกชื่อในตารางผลิตภัณฑ์

คือข้อมูลจากตารางลูกค้าจะมาจากหลาย field คือ c_order_1, c_order_2, c_order_3

แต่ไปเรียกเอาชื่อจากตารางผลิตภัณฑ์อ่ะครับ

สมมติดึง c_order_1 ไปเรียกชื่อผลิตภัณฑ์ เพียงข้อมูลเดียวอ่ะชื่อออก

แต่พอเขียนหลายข้อมูล เช่น c_order_1, c_order_2, c_order_3 มัน error เลยไม่รู้จะเขียนยังไงดี
บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
icez
Verified Seller
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 296
ออฟไลน์ ออฟไลน์

กระทู้: 2,886



ดูรายละเอียด
« ตอบ #4 เมื่อ: 26 พฤศจิกายน 2009, 10:34:05 »

SELECT * FROM customer c LEFT JOIN product p1 ON c.c_order_1 = p1.name LEFT JOIN product p2 ON c.c_order_2 = p2.name LEFT JOIN product p3 ON c.c_order_3 = p3.name
บันทึกการเข้า

THZHost SSD Hosting ไทย/สิงคโปร์ พร้อม firewall ป้องกันการยิงเว็บ + scan ไวรัสในเว็บ
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #5 เมื่อ: 26 พฤศจิกายน 2009, 10:44:21 »

SELECT * FROM customer c LEFT JOIN product p1 ON c.c_order_1 = p1.name LEFT JOIN product p2 ON c.c_order_2 = p2.name LEFT JOIN product p3 ON c.c_order_3 = p3.name

แล้วจะเรียกข้อมูลยังไงครับเนี่ย

$res = mysql_fetch_array($result)

$res['name']; <<< อันนี้จะเรียกกี่อันมันก้อจะออกแต่ชื่อสุดท้าย

$res['p1.name'] อันนี้ไม่ออก
« แก้ไขครั้งสุดท้าย: 26 พฤศจิกายน 2009, 10:53:31 โดย Kizmo » บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #6 เมื่อ: 26 พฤศจิกายน 2009, 11:07:52 »

main idea คือ เอาข้อมูลหลายข้อมูลจากตาราง ลูกค้า ไปเรียกชื่อในตารางผลิตภัณฑ์

คือข้อมูลจากตารางลูกค้าจะมาจากหลาย field คือ c_order_1, c_order_2, c_order_3

แต่ไปเรียกเอาชื่อจากตารางผลิตภัณฑ์อ่ะครับ

สมมติดึง c_order_1 ไปเรียกชื่อผลิตภัณฑ์ เพียงข้อมูลเดียวอ่ะชื่อออก

แต่พอเขียนหลายข้อมูล เช่น c_order_1, c_order_2, c_order_3 มัน error เลยไม่รู้จะเขียนยังไงดี

อยากช่วยนะครับแต่ งง แหลกลาน
1. เอาข้อมูลหลายข้อมูลจากตาราง ลูกค้า ไปเรียกชื่อในตารางผลิตภัณฑ์
2. ข้อมูลจากตารางลูกค้าจะมาจากหลาย field คือ c_order_1, c_order_2, c_order_3

ขอมูลประมาณนี้เปล่า

customer
c_order_1, c_order_2, c_order_3
1            1            2       
2            1            3

product
id ,Name
1  เครื่องชั่ง
2  รถลาก
3  ม้าเหล็ก
4  หมูสนาม
โค๊ด:
SELECT
c.c_order_1,
c.c_order_2,
c.c_order_3,
p1.name as name1,
p2.name as name2,
p3.name as name3
FROM
customer AS c
Inner Join product p1 ON p1.id = c.c_order_1
Inner Join product p2 ON p2.id = c.c_order_2
Inner Join product p3 ON p3.id = c.c_order_3
ก็คงประมาณนี้มั่ง
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 26 พฤศจิกายน 2009, 11:10:57 »

อยากช่วยนะครับแต่ งง แหลกลาน
1. เอาข้อมูลหลายข้อมูลจากตาราง ลูกค้า ไปเรียกชื่อในตารางผลิตภัณฑ์
2. ข้อมูลจากตารางลูกค้าจะมาจากหลาย field คือ c_order_1, c_order_2, c_order_3

ขอมูลประมาณนี้เปล่า

customer
c_order_1, c_order_2, c_order_3
1            1            2      
2            1            3

product
id ,Name
1  เครื่องชั่ง
2  รถลาก
3  ม้าเหล็ก
4  หมูสนาม
โค๊ด:
SELECT
c.c_order_1,
c.c_order_2,
c.c_order_3,
p1.name as name1,
p2.name as name2,
p3.name as name3
FROM
customer AS c
Inner Join product p1 ON p1.id = c.c_order_1
Inner Join product p2 ON p2.id = c.c_order_2
Inner Join product p3 ON p3.id = c.c_order_3
ก็คงประมาณนี้มั่ง

เข้าใจถูกต้องแล้วครับ

แล้วจะ echo ข้อมูล ในการ fetch 1 ครั้งว่ายังไงครับเนี่ย
« แก้ไขครั้งสุดท้าย: 26 พฤศจิกายน 2009, 11:18:33 โดย Kizmo » บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 26 พฤศจิกายน 2009, 11:42:07 »

อยากช่วยนะครับแต่ งง แหลกลาน
1. เอาข้อมูลหลายข้อมูลจากตาราง ลูกค้า ไปเรียกชื่อในตารางผลิตภัณฑ์
2. ข้อมูลจากตารางลูกค้าจะมาจากหลาย field คือ c_order_1, c_order_2, c_order_3

ขอมูลประมาณนี้เปล่า

customer
c_order_1, c_order_2, c_order_3
1            1            2      
2            1            3

product
id ,Name
1  เครื่องชั่ง
2  รถลาก
3  ม้าเหล็ก
4  หมูสนาม
โค๊ด:
SELECT
c.c_order_1,
c.c_order_2,
c.c_order_3,
p1.name as name1,
p2.name as name2,
p3.name as name3
FROM
customer AS c
Inner Join product p1 ON p1.id = c.c_order_1
Inner Join product p2 ON p2.id = c.c_order_2
Inner Join product p3 ON p3.id = c.c_order_3
ก็คงประมาณนี้มั่ง

เข้าใจถูกต้องแล้วครับ

แล้วจะ echo ข้อมูล ในการ fetch 1 ครั้งว่ายังไงครับเนี่ย
$query=mysql_query($sql);
$rs=mysql_fetch_assoc($query);
$rs["name1"];//p1.name as name1,
$rs["name2"];//p2.name as name2,
$rs["name3"];//p3.name as name3,
« แก้ไขครั้งสุดท้าย: 26 พฤศจิกายน 2009, 14:16:39 โดย konlata » บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #9 เมื่อ: 26 พฤศจิกายน 2009, 11:48:55 »

ยังไม่ได้เลยอ่ะครับ

 wanwan031
บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #10 เมื่อ: 26 พฤศจิกายน 2009, 11:55:00 »

ยังไม่ได้เลยอ่ะครับ

 wanwan031
แล้วต้องการให้แสดงผลออกมาแบบไหนละคราบ
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #11 เมื่อ: 26 พฤศจิกายน 2009, 12:10:15 »

ยังไม่ได้เลยอ่ะครับ

 wanwan031
แล้วต้องการให้แสดงผลออกมาแบบไหนละคราบ


คือมันไม่แสดงผลเลยครับ

กำลังดูอยู่ว่าผิดตรงไหน
บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #12 เมื่อ: 26 พฤศจิกายน 2009, 12:42:42 »

 wanwan023
ยังไม่ได้เลยอ่ะครับ

 wanwan031
แล้วต้องการให้แสดงผลออกมาแบบไหนละคราบ


คือมันไม่แสดงผลเลยครับ

กำลังดูอยู่ว่าผิดตรงไหน
บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
Kizmo
ก๊วนเสียว
*

พลังน้ำใจ: 3
ออฟไลน์ ออฟไลน์

กระทู้: 200



ดูรายละเอียด เว็บไซต์
« ตอบ #13 เมื่อ: 26 พฤศจิกายน 2009, 14:01:16 »

โอยยย ไม่ได้จริง ๆ อย่างเครียด

แบบว่าผมต้องการให้มันแสดงผลแบบนี้ครับ

ดึงค่าจาก field c_order_1, c_order_2, c_order_3 (ใน 1 record)

มาเทียบ id กับ product เพื่อเรียก product name

โดย Where จาก id customer

แล้ว echo ออกมา เช่น

table customer
id   c_order_1   c_order_2   c_order_3
C001   P001      P002      P003

table product
id   name
P001   มะม่วง
P002   มะนาว
P003   มะพร้าว

เสร็จแล้วให้ fetch โดย where จาก id customer

แล้วดึงค่า c_order ทั้ง 3 field มาเทียบชื่อแล้วแสดงผล

มะม่วง
มะนาว
มะพร้าว
บันทึกการเข้า

รับถ่ายภาพ http://emofoto.net
@@@
Administrator
สมุนแก๊งเสียว
*

พลังน้ำใจ: 33
ออฟไลน์ ออฟไลน์

กระทู้: 634



ดูรายละเอียด เว็บไซต์
« ตอบ #14 เมื่อ: 26 พฤศจิกายน 2009, 14:18:40 »

โอยยย ไม่ได้จริง ๆ อย่างเครียด

แบบว่าผมต้องการให้มันแสดงผลแบบนี้ครับ

ดึงค่าจาก field c_order_1, c_order_2, c_order_3 (ใน 1 record)

มาเทียบ id กับ product เพื่อเรียก product name

โดย Where จาก id customer

แล้ว echo ออกมา เช่น

table customer
id   c_order_1   c_order_2   c_order_3
C001   P001      P002      P003

table product
id   name
P001   มะม่วง
P002   มะนาว
P003   มะพร้าว

เสร็จแล้วให้ fetch โดย where จาก id customer

แล้วดึงค่า c_order ทั้ง 3 field มาเทียบชื่อแล้วแสดงผล

มะม่วง
มะนาว
มะพร้าว
แสดงข้อมูลเฉพาะครั้งแรกครั้งเดี่ยว
โค๊ด:
$conn=mysql_connect("localhost","root","");
mysql_select_db("test",$conn);
$sql="SELECT c.c_order_1,c.c_order_2,c.c_order_3,p1.name as name1,p2.name as name2,p3.name as name3";
$sql.=" FROM customer c Inner Join product p1 ON p1.id = c.c_order_1 Inner Join product p2 ON p2.id = c.c_order_2 Inner Join product p3 ON p3.id = c.c_order_3";
$query=mysql_query($sql);
$rs=mysql_fetch_assoc($query);
echo $rs["name1"]."<br/>";//p1.name as name1
echo $rs["name2"]."<br/>";//p2.name as name2
echo $rs["name3"]."<br/>";//p3.name as name3


แสดงข้อมูลทั้งหมดใน table
โค๊ด:
$conn=mysql_connect("localhost","root","");
mysql_select_db("test",$conn);
$sql="SELECT c.c_order_1,c.c_order_2,c.c_order_3,p1.name as name1,p2.name as name2,p3.name as name3";
$sql.=" FROM customer c Inner Join product p1 ON p1.id = c.c_order_1 Inner Join product p2 ON p2.id = c.c_order_2 Inner Join product p3 ON p3.id = c.c_order_3";
$query=mysql_query($sql);
while($rs=mysql_fetch_assoc($query)){
echo $rs["name1"]."<br/>";//p1.name as name1
echo $rs["name2"]."<br/>";//p2.name as name2
echo $rs["name3"]."<br/>";//p3.name as name3
}

บันทึกการเข้า

รับซื้อเว็บ 100uip ต่อวันขึ้นไป EA Forex
genetic
หัวหน้าแก๊งเสียว
*

พลังน้ำใจ: 76
ออฟไลน์ ออฟไลน์

กระทู้: 1,703



ดูรายละเอียด เว็บไซต์
« ตอบ #15 เมื่อ: 26 พฤศจิกายน 2009, 14:26:35 »

ผมเอาอีกวิธีมาเสนอครับ เป็นการใช้ sub query (ในกรณีที่สินค้ามีแค่ c_order_1 และ c_order_2 มันก็จะออกมาครับ)
โค๊ด:
$sql = " SELECT id, (SELECT name FROM product WHERE id = c_order_1) as pro_name1, (SELECT name FROM product WHERE id = c_order_2) as pro_name2,
(SELECT name FROM product WHERE id = c_order_3) as pro_name3 FROM customer";
$rs = mysql_query($sql);
$row = mysql_fetch_array($rs);

echo "Product 1: " . $row['pro_name1'] . "<br />";
echo "Product 2: " . $row['pro_name2'] . "<br />";
echo "Product 3: " . $row['pro_name3'];
« แก้ไขครั้งสุดท้าย: 26 พฤศจิกายน 2009, 14:29:19 โดย genetic » บันทึกการเข้า

หน้า: [1]   ขึ้นบน
พิมพ์