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

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

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

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

กระทู้: 624



ดูรายละเอียด
« เมื่อ: 21 กันยายน 2012, 17:54:12 »

ผมอยากให้ 2 ตาราง ที่ไม่มีคีย์ร่วมกันสามารถ join ข้อมูลร่วมกันได้

คือตาราง teacher มีคอลัมน์ t_id, t_name โดยมีค่า 1, นายสมชาย
ตาราง student มีคอลัมน์ s_id, s_name, t_id โดยมีค่า 3, นางสมหญิง, 9

อยากให้สองตารางนี้มา join กันครับ ต้องเขียนโค้ดยังไงครับ

ขอบคุณมากครับ
บันทึกการเข้า
marus
ก๊วนเสียว
*

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

กระทู้: 467



ดูรายละเอียด
« ตอบ #1 เมื่อ: 21 กันยายน 2012, 18:21:38 »

SELECT * FROM table1,table2
บันทึกการเข้า
@Roverpost
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,816



ดูรายละเอียด เว็บไซต์
« ตอบ #2 เมื่อ: 22 กันยายน 2012, 22:56:31 »

SELECT * FROM table1,table2

ตามนี้เลยครับ จะ Left Right ก็จัดไปครับ  ลองศึกษาเชิงลึกดูนะครับ แล้วจะรู้ว่ามัน ประยุกต์ใช้ได้เยอะ
บันทึกการเข้า

Shibot โปรแกรมแชทบอท พร้อมระบบไลฟ์สด ที่สามารถเพิ่มยอดขายได้จริง
nuningplus
สมุนแก๊งเสียว
*

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

กระทู้: 624



ดูรายละเอียด
« ตอบ #3 เมื่อ: 22 กันยายน 2012, 23:04:34 »

ขอบคุณทั้งสองท่านมากครับ
บันทึกการเข้า
Bigguide
คนรักเสียว
*

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

กระทู้: 138



ดูรายละเอียด เว็บไซต์
« ตอบ #4 เมื่อ: 22 กันยายน 2012, 23:06:10 »

select a.t_name,b.s_name from teacher as a
left join
(select s_name from student where t_id=9) as b
on a.t_id=b=t_id
where xxxxx=yyyyy

select * แนะนำให้หลีกเลี่ยงนะครับ ถ้าจะ select ควร select เฉพาะค่าที่นำมาใช้จริงๆ

แก้ไข.. ไม่มี key ร่วมกันยังไงครับตัวอย่างที่ให้มามี t_id ทั้งคู่?
« แก้ไขครั้งสุดท้าย: 22 กันยายน 2012, 23:14:30 โดย Bigguide » บันทึกการเข้า

I'm a dreamer
nuningplus
สมุนแก๊งเสียว
*

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

กระทู้: 624



ดูรายละเอียด
« ตอบ #5 เมื่อ: 22 กันยายน 2012, 23:38:21 »

select a.t_name,b.s_name from teacher as a
left join
(select s_name from student where t_id=9) as b
on a.t_id=b=t_id
where xxxxx=yyyyy

select * แนะนำให้หลีกเลี่ยงนะครับ ถ้าจะ select ควร select เฉพาะค่าที่นำมาใช้จริงๆ

แก้ไข.. ไม่มี key ร่วมกันยังไงครับตัวอย่างที่ให้มามี t_id ทั้งคู่?

คือคีย์ร่วมกันผมหมายถึงมีคีย์เหมือนกันอะครับ ถ้า 1 กับ 1 มันเป็นคีย์เหมือนกัน ก็ใช้ INNER JOIN กันได้ แต่ถ้าผมจะ join โดยที่คีย์ของแต่ละตารางเป็น 0 กับ 1 (ตามตัวอย่าง) อะไรทำนองนี้ครับ
บันทึกการเข้า
MeenyFancy
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,270



ดูรายละเอียด
« ตอบ #6 เมื่อ: 23 กันยายน 2012, 11:17:59 »

ตามทฤษฏีมัน join ได้ครับ
แต่ใช้งานจริงไม่ได้เรื่องหรอก เพราะเราไม่สามารถระบุได้ว่าต้องการให้เลือกจากอะไร ยกเว้นจะส่ง parameter ไปสองค่าของ table1 อันนึง table2 อีกอันนึง
แต่มันก็ดูพิลึกๆ

ถ้าข้อมูลมาจาก 2 ระบบ ผมว่า migrate ให้เรียบร้อยค่อยมาทำดีกว่ามั้ง
บันทึกการเข้า

seowizard
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,119



ดูรายละเอียด เว็บไซต์
« ตอบ #7 เมื่อ: 23 กันยายน 2012, 11:42:25 »

design ใหม่ได้ไหมผมว่ามันผิดหลัก normalization อยู่นะ  ความสัมพันธ์ของทั้งสอง entity น่าจะเป็นแบบ  one-to-many 
คือ ครู 1 คนสามารถสอนนักเรียนได้หลายคน ฉะนั้น  primary key เช่น teacher_id ควรจะมี foreign key ในตารางของ student ด้วยนะครับ
การ join กันของ 2 ตารางจะทำให้ performance ในการ select ข้อมูลมาดูมีความรวดเร็ว ลดปัญหาคอขวดได้

แต่ถ้า design ใหม่ไม่ได้ก็ตามความเห็นด้านบนที่แนะนำนั่นแหละครับ แต่บอกตามตรงว่าคนมา develop ต่อนี่ต้อง optimize กันเหนื่อยแน่  Tongue
บันทึกการเข้า
gubaaball
หัวหน้าแก๊งเสียว
*

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

กระทู้: 1,678



ดูรายละเอียด เว็บไซต์
« ตอบ #8 เมื่อ: 23 กันยายน 2012, 12:58:46 »

ออกแบบ db ได้ดี มีชัยกว่าครึ่งครับ พัฒนาต่อจะได้ไม่เหนื่อย  wanwan020
บันทึกการเข้า

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