Rabu, Februari 12, 2014

Relationship Many to many dengan 3 tabel


MySQL mempunyai kemampuan untuk menggabungkan dua tabel atau lebih guna mendapatkan informasi yang diinginkan. Proses yang dilakukan dengan nama JOIN. Dalam penggabungan dari beberapa tabel (join) ada beberapa hal yang perlu diperhatian, antara lain :
  1. Setiap kolom disebutkan dengan bentuk,
  2. Tabel-tabel yang dilibatkan dalam queri perlu disebutkan dalam Klausa FORM dengan antar tabel dipisah oleh koma.
  3. Kondisi dalam WHERE menetukan macam join yang terbentuk
Join dipakai untuk mencari data dari beberapa tabel berdasarkan hubungan yang logis dari tabel-tabel tersebut. Join menyatakan cara SQL Server memakai data dari sebuah tabel untuk memilih data dari tabel lain. SQL Server dapat menggabungkan tabel-tabel sampai 256 tabel.

Relasi many to many merupakan relasi yang paling kompleks, karena diperlukan tabel lain untuk menghubungkan dua tabel data yang saling berkepentingan. Seperti halnya penjualan bisa terhubung dengan banyak product, dan product bisa terhubungan dengan banyak penjualan. 
Tabel penjualan dan product memiliki relasi banyak ke banyak yang dihubungkan oleh tabel item_penjualan. 

Contoh lain adalah dalam sebuah rental peminjaman kaset. dimana user terhubung untuk meminjam kaset (judul movie, jenis dan harga sewa)
  1. Tabel user meliputi  kolom id, name,  address.
  2. Tabel movie meliputi  kolom id, title, genre, price.
  3. Tabel detail meliputi kolom id, user_id, movie_id.
Ok, langsung saja ke pokok permasalahannya,
  •  munculkan tabel USER dengan comand;
SELECT * FROM user; 

 maka keluar query



  • munculkan tabel MOVIE dengan comand;
SELECT * FROM movie;

maka keluar query 




  • munculkan tabel DETAIL dengan comand; 
SELECT * FROM detail;

maka keluar query 
  


  • penggabungan / INNER JOIN dari ke-3 tabel diatas,
Dimana id adalah identitas dari tabel USER dan tabel MOVIE, kita pilih dari Tabel DETAIL karena yang akan banyak muncul

SELECT detail.id,detail.user_id, user.name, detail.movie_id,title,price FROM detail INNER JOIN user ON detail.user_id = user.id INNER JOIN movie ON detail.movie_id=movie.id; 

maka keluar query 

RYSabilillah.blogspot.com
  •  jika kita ingin menampilkan PEMINJAM, JUMLAH kaset yang di pinjam dan TOTAL PEMBAYARAN oleh si peminjam kaset.

SELECT user.id, user.name AS peminjam, COUNT(*) AS jumlah, SUM(movie.price) AS total_pembayaran from detail  join user on detail.user_id = user.id join movie on detail.movie_id=movie.id GROUP BY user.name;

maka keluar query


  • jika ingin menampilkan Title dan genre film secara berbeda dalam 1 tabel
SELECT movie.title AS title1, movie.genre AS genre1, m.title AS title2, m.genre AS genre2 from movie JOIN movie m WHERE movie.genre ='cartoon' AND m.genre = 'horror' group by movie.genre AND m.genre;  


  • jika ingin menampilkan jumlah kaset yang di pinjam oleh peminjam
select movie.id, movie.title, COUNT(*) AS jumlah  from detail  join user on detail.user_id = user.id join movie on detail.movie_id=movie.id GROUP BY movie.id;




#id 5 tidak muncul karena film dengan id 5(The Ring) tidak ada yang meminjam, lihat tabel detail sebelumnya.
      
                

S E K I A N, , ,




0 komentar:

Share

Twitter Delicious Facebook Digg Stumbleupon Favorites More