Saya memiliki tiga tabel bernama
**Student Table**
-------------
id name
-------------
1 ali
2 ahmed
3 john
4 king
**Course Table**
-------------
id name
-------------
1 physic
2 maths
3 computer
4 chemistry
**Bridge**
-------------
sid cid
-------------
1 1
1 2
1 3
1 4
2 1
2 2
3 3
3 4
4 1
4 2
Sekarang untuk menunjukkan nama siswa dengan nama mata kuliah yang dia pelajari seperti,
**Result**
---------------------------
Student Course
---------------------------
ahmed physic
ahmed maths
ahmed computer
ahmed chemistry
ali physic
ali maths
john computer
john chemistry
king physic
king maths
Saya membangun kueri berikut
select s.name as Student, c.name as Course from student s, course c join bridge b on c.id = b.cid order by s.name
Tapi itu tidak mengembalikan hasil yang dibutuhkan ...
Dan apa jadinya untuk bentuk yang dinormalisasi, jika saya ingin menemukan siapa manajer dari yang lain:
**employee**
-------------------
id name
-------------------
1 ali
2 king
3 mak
4 sam
5 jon
**manage**
--------------
mid eid
--------------
1 2
1 3
3 4
4 5
Dan ingin mendapatkan hasil ini:
**result**
--------------------
Manager Staff
--------------------
ali king
ali mak
mak sam
sam jon
Jawaban:
Cukup gunakan:
sumber
Gunakan sintaks ANSI dan akan jauh lebih jelas bagaimana Anda menggabungkan tabel:
sumber
ANSI
sintaks, ada baiknya Anda meluangkan waktu untuk mempelajarinya. Ini akan membantu Anda menghindariJOIN
kesalahan seperti yang Anda buat di masa mendatang.Untuk menormalkan bentuk
sumber
m.mid = e1.id
danm.eid = e2.id
?sumber
Anda dapat BERGABUNG DENGAN beberapa TABEL seperti contoh di atas.
sumber
Kueri untuk menggabungkan lebih dari dua tabel:
sumber
Gunakan ini:
sumber
Jangan bergabung seperti itu. Ini benar-benar latihan yang sangat buruk !!! Ini akan memperlambat kinerja dalam mengambil dengan data besar. Misalnya, jika ada 100 baris di setiap tabel, server database harus mengambil
100x100x100 = 1000000
waktu. Itu harus diambil1 million
berkali - kali. Untuk mengatasi masalah itu, gabungkan dua tabel pertama yang dapat mengambil hasil dalam pencocokan seminimal mungkin (Terserah skema database Anda). Gunakan hasil tersebut di Subquery lalu gabungkan dengan tabel ketiga dan ambil. Untuk join pertama ->100x100= 10000
times dan misalkan kita mendapatkan 5 hasil yang cocok. Dan kemudian kita bergabung dengan tabel ketiga dengan hasil ->5x100 = 500.
Total fetch =10000+500 = 10200
kali saja. Dan dengan demikian, kinerjanya naik !!!sumber