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

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

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

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

กระทู้: 317



ดูรายละเอียด
« เมื่อ: 07 มิถุนายน 2018, 19:34:05 »

ต้องการผลลัพธ์ sql เป็นแบบนี้ต้องเขียนยังไงครับ

ตารางที่ 1
id        name
1          ทดสอบ
2          การบ้าน

ตารางที่ 2
id   id_1     name
1     1        มด
2     1        นก
3     2        หาย

* id_1 คือ FK จากตาราง 1

ผลลัพธ์ ถ้าค้นหาตารางที่ 2 โดยใช้เงื่อนไข id = 1 จะต้องเอาข้อมูล id_1 ที่มีอยู่ในตารางที่ 2 มาทั้งหมด

ตัวอย่างผลลัพธ์
ถ้าคนหา id=1
1       ทดสอบมด
2       ทดสอบนก

จะต้องเขียน SQL อย่างไรครับ
บันทึกการเข้า
kondam
เจ้าพ่อบอร์ดเสียว
*

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

กระทู้: 6,137



ดูรายละเอียด เว็บไซต์
« ตอบ #1 เมื่อ: 07 มิถุนายน 2018, 19:58:56 »

ลายแทงครับ
โค๊ด:
https://www.w3schools.com/Sql/sql_join.asp
บันทึกการเข้า

ขอแนะนำ : wanwan034

1. จดโดเมน ต่ออายุ godaddy ลด 40% ถูกที่สุดในตอนนี้! คลิก

2.จดโดเมน + private 8.88$ [namecheap]   คลิก

3.แนะนำคลาวด์โฮสติ้งไทย ที่ผมใช้อยู่ [Thaidata]   คลิก
f206cs
Newbie
*

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

กระทู้: 64



ดูรายละเอียด
« ตอบ #2 เมื่อ: 08 มิถุนายน 2018, 10:43:15 »

อ่ะตัวอย่าง

โค๊ด:

select tb2.id , CONCAT(tb1.name , tb2.name) from table2 as tb2 left join table1 as tb1 On tb1.id = tb2.id_1 Where tb2.id_1 = '1';

table1 = ชื่อตารางที่ 1
table2 = ชื่อตารางที่ 2


 wanwan003 wanwan003 wanwan003

บันทึกการเข้า
sputtaro
สมุนแก๊งเสียว
*

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

กระทู้: 910



ดูรายละเอียด
« ตอบ #3 เมื่อ: 08 มิถุนายน 2018, 11:23:34 »

เขียนได้หลายแบบครับ ถ้าใช้การ join ก็ กดดูตามที่ท่าน kondam แจ้งลิ้งค์ไว้ แล้วหาข้อมูลอื่นเพิ่มเติม
ตัวอย่าง left join

"SELECT table1.*,table2.id_1,table2.name
FROM table1
LEFT JOIN table2
ON table1.id=table2.id_1
WHERE table1.id=?"

table1.* หมายถึงเลือกทุกฟิลด์ในตารางที่1 ถ้าจะเฉพาะเจาะจง ก็ใชั table1.id,table1.name
? คือ ค่าที่รับมาจาก user input หรือ อะไรก็ตามที่ผ่านการตรวจสอบแล้ว เพื่อป้องกันตัวเอง
« แก้ไขครั้งสุดท้าย: 08 มิถุนายน 2018, 11:29:10 โดย sputtaro » บันทึกการเข้า
gungsakab
ก๊วนเสียว
*

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

กระทู้: 230



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 08 มิถุนายน 2018, 14:57:16 »

SELECT table1.name, table2.name
FROM table2
LEFT JOIN table1
ON (SELECT table2.id_1
FROM table2
LEFT JOIN table1
ON table2.id_1 = table1.id
WHERE table2.id = '1'
)


พิมพ์ในมือถือ ยังไม่ได้ลอง

ตรง select ด้านบนไปต่อข้อความเอาเอง
บันทึกการเข้า
หน้า: [1]   ขึ้นบน
พิมพ์