Sampai dengan tutorial sebelum ini, kita hanya menampilkan hasil dari satu tabel saja. Relasional Database adalah tentang kumpulan tabel yang saling berhubungan.
Dalam Tutorial Belajar MySQL: Cara Menggabungkan Tabel MySQL dengan INNER JOIN ini akan dipelajari cara menyatukan hasil dari dua tabel atau lebih menggunakan query SELECT..INNER JOIN.
Mempersiapkan Tabel Sample: mata_kuliah dan daftar_dosen
Sebagai tabel sample untuk tutorial ini, saya masih menggunakan tabel sample dari Tutorial Belajar MySQL: Menampilkan Data dari Tabel MySQL (SELECT).
Jika anda ingin mencoba langsung query yang akan di bahas, silahkan ikuti petunjuk pembuatan tabel tersebut. Tabel kita akan terdiri dari tabel mata_kuliah dan tabel daftar_dosen.
Isi tabel daftar_dosen:
NIP | Nama Dosen | No HP | Alamat |
---|---|---|---|
0160436012 | Sabrina Sari | 0812349900 | Pekanbaru |
0260432002 | Maya Ari Putri | 0812345234 | Palembang |
0275430005 | Susi Indriani | 0812656532 | Bogor |
0480432066 | Tia Santrini | 0812451177 | Padang |
0576431001 | M. Siddiq | 0812979005 | Jakarta |
0770435006 | Rubin Hadi | 0812567678 | Papua |
0869437003 | Mustalifah | 0812338877 | Aceh |
1080432007 | Arif Budiman | 0812456345 | Makasar |
Isi tabel mata_kuliah:
Kode Mata Kuliah | Nama Matakuliah | Jumlah SKS | Semester | Nip Dosen |
---|---|---|---|---|
MATDAS | Matematika Dasar | 4 | 1 | 0160436012 |
FISDAS | Fisika Dasar | 2 | 1 | 0480432066 |
TEKKOM | Teknik Kompilasi | 2 | 6 | 0480432066 |
JARKOM | Jaringan Komputer | 3 | 3 | 0770435006 |
DTBASE | Database | 4 | 4 | 0275430005 |
SISOPR | Sistem Operasi | 2 | 4 | 0160436012 |
MIKROP | Mikro Prosesor | 2 | 5 | 0480432066 |
Tabel daftar_dosen berisi data dari dosen, dimana kolom NIP berisi NIP dosen. Pada tabel mata_kuliah, berisi daftar mata kuliah.
Yang perlu diperhatikan adalah kolom NIP dari kedua tabel. Kolom NIP inilah yang akan kita pakai untuk menggabungkan kedua tabel.
Cara Menggabungkan Tabel MySQL dengan INNER JOIN
Tujuan dari menggabungkan tabel adalah untuk menyajikan informasi secara lebih detail.
Contohnya dari tabel daftar_dosen dan tabel mata_kuliah diatas. Kita ingin menyajikan informasi mata kuliah sekaligus nama dosen yang mengajar mata kuliah tersebut. Data yang ingin disajikan adalah nama mata kuliah, jumlah SKS, dan nama dosen yang mengajar.
Query INNER JOIN memiliki beberapa variasi, yaitu SELECT..INNER JOIN..ON dan SELECT..INNER JOIN..USING. Kita akan membahasnya satu persatu.
Cara Menggabungkan Tabel MySQL dengan query SELECT..INNER JOIN..ON
Format dasar dari penulisan query SELECT..INNER JOIN..ON adalah:
SELECT nama_kolom_tampil FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua ON nama_kolom_join_tabel_pertama = nama_kolom_join_tabel_kedua
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel_pertama adalah nama tabel pertama yang akan digabung.
- nama_tabel_kedua adalah nama tabel kedua yang akan digabung.
- nama_kolom_join_tabel_pertama adalah nama kolom yang akan digunakan sebagai join dari tabel pertama.
- nama_kolom_join_tabel_kedua adalah nama kolom yang akan digunakan sebagai join dari tabel kedua.
Syarat untuk INNER JOIN adalah kedua tabel harus memiliki sebuah kolom dengan nilai yang sama. Kolom tersebut yang akan digunakan dalam proses JOIN.
Pada contoh kita, kolom itu adalah kolom NIP dari tabel nama_dosen, dan kolom NIP_dosen dari tabel mata_kuliah. Perhatikan walaupun keduanya berisi NIP, namun nama kolomnya berbeda.
Query untuk SELECT..INNER JOIN..ON tabel mata_kuliah dengan daftar_dosen adalah:
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON NIP_dosen=NIP; +-------------------+------------+---------------+ | nama_matkul      | jumlah_SKS | nama_dosen   | +-------------------+------------+---------------+ | Database         |         4 | Susi Indriani | | Fisika Dasar     |         2 | Tia Santrini | | Jaringan Komputer |         3 | Rubin Hadi   | | Matematika Dasar |         4 | Sabrina Sari | | Mikro Prosesor   |         2 | Tia Santrini | | Sistem Operasi   |         2 | Sabrina Sari | | Teknik Kompilasi |         2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec)
Dari hasil query SELECT diatas, saya menggabung tabel mata_kuliah dan daftar_dosen untuk mendapatkan tampilan seluruh mata kuliah, jumlah sks, dan nama dosen yang mengajar.
Kita menggunakan tabel mata_kuliah sebagai tabel pertama, dan tabel daftar_dosen sebagai tabel kedua.
Cara Menggabungkan Tabel MySQL dengan SELECT..INNER JOIN..USING
Cara JOIN kedua adalah menggunakan USING sebagai pengganti ON untuk query INNER JOIN.
Format dasar dari penulisan query SELECT..INNER JOIN..USING adalah:
SELECT nama_kolom_tampil FROM nama_tabel_pertama INNER JOIN nama_tabel_kedua USING (nama_kolom_join)
- nama_kolom_tampil adalah nama dari kolom yang akan kita tampilkan, bisa semua kolom dalam tabel, atau hanya kolom tertentu saja.
- nama_tabel_pertama adalah nama tabel pertama yang akan digabung.
- nama_tabel_kedua adalah nama tabel kedua yang akan digabung.
- nama_kolom_join adalah nama kolom yang akan digunakan sebagai join.
Syarat untuk INNER JOIN..USING adalah kedua tabel harus memiliki nama kolom yang sama. Dalam contoh kita, kolom tersebut adalah kolom NIP.
Namun karena nama kolom NIP untuk tabel mata_kuliah adalah NIP_dosen, sedangkan pada kolom daftar_dosen kolom NIP hanya NIP saja, maka harus disamakan terlebih dahulu. Untuk hal ini saya memutuskan kedua kolom akan bernama NIP_dosen.
mysql> ALTER TABLE daftar_dosen CHANGE NIP NIP_dosen CHAR(10); Query OK, 8 rows affected (0.08 sec) Records: 8Â Duplicates: 0Â Warnings: 0
Setelah kedua kolom NIP bernama sama, saatnya kita menggabungkan kedua tabel ini
mysql> SELECT nama_matkul, jumlah_SKS, nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen USING (NIP_dosen); +-------------------+------------+---------------+ | nama_matkul      | jumlah_SKS | nama_dosen   | +-------------------+------------+---------------+ | Database         |         4 | Susi Indriani | | Fisika Dasar     |         2 | Tia Santrini | | Jaringan Komputer |         3 | Rubin Hadi   | | Matematika Dasar |         4 | Sabrina Sari | | Mikro Prosesor   |         2 | Tia Santrini | | Sistem Operasi   |         2 | Sabrina Sari | | Teknik Kompilasi |         2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec)
Hasilnya sama persis dengan SELECT..INNER JOIN..ON, hanya berbeda cara penulisan.
Di dalam MySQL, kata INNER JOINÂ dapat diganti dengan CROSS JOIN, atau hanya JOIN saja. Ketiga kata kunci ini memiliki fungsi yang sama. MySQL menyediakannya agar dapat kompatible dengan bahasa SQL dari RDBMS lainnya seperti ORACLE dan MS SQL.
Misalnya untuk query kita diatas, dapat juga ditulis menjadi
mysql> SELECT nama_matkul, jumlah_SKS, nama_dosen FROM mata_kuliah CROSS JOIN daftar_dosen USING (NIP_dosen);
Cara Penulisan Nama Kolom: Nama_Tabel.Nama_Kolom
Setelah kita merubah nama kolom NIP menjadi NIP_dosen pada tabel daftar_dosen, sekarang tiap tabel memiliki nama kolom yang sama, yakni NIP_dosen.
Jika kita jalankan kembali query SELECT..INNER JOIN..ON dengan nama kolom ini, MySQL akan mengeluarkan error:
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON NIP_dosen=NIP_dosen; ERROR 1052 (23000): Column 'NIP_dosen' in on clause is ambiguous
Dari pesan error yang terjadi, MySQL 'bingung' dalam memilih kolom. Query ON NIP_dosen=NIP_dosen menjadi ambigu karena kedua tabel kita memiliki nama kolom yang sama.
Untuk mengatasi ambiguitas ini, MySQL mengharuskan kita secara eksplisit menyebutkan nama tabelnya. Cara penulisan ini menggunakan tanda titik sebagai pemisah:
Nama_Tabel.Nama_Kolom
Misalkan untuk merujuk pada kolom NIP_dosen pada tabel mata_kuliah, maka penulisannya menjadi:
Mata_kuliah.NIP_dosen
Sehingga query SELECT..INNER JOIN..ON yang benar adalah:
mysql> SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah INNER JOIN daftar_dosen ON mata_kuliah.NIP_dosen=daftar_dosen.NIP_dosen; +-------------------+------------+---------------+ | nama_matkul      | jumlah_SKS | nama_dosen   | +-------------------+------------+---------------+ | Database         |         4 | Susi Indriani | | Fisika Dasar     |         2 | Tia Santrini | | Jaringan Komputer |         3 | Rubin Hadi   | | Matematika Dasar |         4 | Sabrina Sari | | Mikro Prosesor   |         2 | Tia Santrini | | Sistem Operasi   |         2 | Sabrina Sari | | Teknik Kompilasi |         2 | Tia Santrini | +-------------------+------------+---------------+ 7 rows in set (0.00 sec)
Query SELECT..INNER JOIN akan sering kita pakai untuk menampilkan data dari beberapa tabel.
Ketika mendesain database, sedapat mungkin eleminasi data yang redundan (data yang berulang) dari satu tabel besar menjadi beberapa tabel kecil, lalu digabung pada saat menampilkan data.
Dalam lanjutan tutorial belajar MySQL berikutnya, kita akan bahas tentang cara menghapus data dari tabel MySQL dengan query DELETE.
perbedaannya INNER JOIN dg LEFT JOIN dan RIGHT JOIN apa?
Perbedaan antara INNER JOIN, LEFT JOIN dan RIGHT JOIN berada pada cara penanganan data yang tidak ada pasangannya, saya memang belum sempat membuat artikel untuk contoh perbedaan ketiganya, namun untuk sementara, reza bisa membaca artikel rekan kita ini: Perbedaan INNER JOIN, LEFT JOIN dan RIGHT JOIN
Terima kAsih
saya mau bertanya :
saya punya tiga tabel : pertama tabel mitra(idmitra,nama,idjab,idstatus)
kedua tabel jabatan (idjab,jabatan)
ketiga tabel status (idstatus, status)
bagaimana cara saya menggabungkan ketiganya dengan inner join?
terima kasih
bantu jawab ya, tabel status join mitra
terus join sama tabel jabatan
select * from tabel_status a join tabel_mitra b
on a.idstatus=b.idstatus
join tabel_jabatan c
on b.idjab=c.idjab
sore gan ane punya permasalahan dengan mysql, ilustrasinya gini gan
ane punya 2 table dalam satu database yaitu tabel a dan tabel b dengan field yang akan diambil yaitu
nopol, jenis, dan jparkir dari tabel a, dan udah ada datanya.
gimana caranya semua data salah satu nopol dari tabel a dapat terdeteksi secara otomatis di tabel b (jenis dan jparkir) nya ketika ane insert salah satu data nopol yang sudah terdaftar di tabel a seperti ("D3884F") ke tabel b ya gan?
maaf kalo pertanyaanya agak bikin membingungkan ya gan nubi problem nih
Kalau menurut saya, hal ini lebih cocok di desain di sisi aplikasi, bukan dari dalam MySQL. Boleh tau
aplikasi yang dibuat menggunakan apa? kalau menggunakan PHP, kira-kita solusinya sbb:
1. User menginput nopol "D3884F" , simpan di variabel : $nopol
2. Ambil data dari tabel a dimana nopol adalah D3884F : SELECT jenis, jparkir FROM a WHERE nopol=$nopol.
3. Simpan hasil query tabel a = jenis di $jenis, jparkir di $jparkir.
4. Masukkan ketiga variabel tersebut ke dalam tabel b : INSERT INTO b VALUES ($nopol, $jenis, $jparkir)
Mudah-mudahan bisa membantu…
saya pakai netbeans mas agar lebih jelasnya begini alurnya, saat user menginputkan nopol dan jenis kendaraan kedua veriabel akan tersimpan langsung ke "tabel b" yang saya beri nama "tabel parkir" (masalah terpecahkan). permasalahannya disini bagaimana agar variabel jparkir dapat secara otomatis terbaca dan tersimpan "ke tabel b" sesuai data yang ada di tabel a, yang memiliki 3 field yaitu, Nopol, jparkir(member dan nonmember) dan jenis(jenis kendaraan) ini dimaksudkan agar saat diketahui jika jparkir adalah member maka total biaya "free" dan jika non member dikenakan tarif yang telah ditentukan
terimakasih sebelumnya mas
Kalau melihat proses yang akan dijalankan, menurut saya pada saat user menginput nopol dan jenis kendaraan, jangan langsung dimasukkan kedalam database, namun ditampung dulu di dalam sebuah variabel. Nilai inputan inilah yang akan diproses terlebih dahulu melalui bahasa pemograman yang digunakan (apakah itu PHP, Java, atau yang lainnnya).
Langkah yang digunakan sama seperti jawaban saya sebelumnya, yaitu cari dari tabel a apakah ada nopol yang diinput oleh user. Jika ada (yang berarti user adalah member), ambil nilai jparkirnya, dan baru lakukan input ke tabel b (nopol, jparkir, dan jenis), namun jika pada saat pencarian tidak ada satupun nopol yang diinput terdapat di dalam tabel a, dapat dipastikan user adalah pelanggan baru, dan lakukan input ke tabel b dengan nilai jparkir=nonmember :)
hallo gan,,, numpang nanya,, saya mempunyai 5 tabel yaitu, a,b,c,d,e bgaimana cara menggabungkannya dan ddlam nya mempunyai kolom yg sama yaitu nisn,, mohon bantuannya , terimakasih
mas, kalau dalam satu tabel dilakukan operasi perkalian antar tabel dalam satu tabel dan hasilnya akan disimpan dalam field yang lain dalam tabel yang sama bagaimana? matur nuwon
Maksudnya perkalian antar field dalam satu tabel ya?
Kalau data tabel belum terisi, pada saat menginput data kita bisa langsung membuat operasinya untuk disimpan di dalam field hasil.
Misalkan tabel angka dengan 3 field: angka1, angka2 dan hasil. Pada saat INSERT, kita bisa membuat query berikut:
INSERT into angka values (4, 7, 4*7);
Namun jika tabel sudah ada, dan field angka1 dan angka2 sudah terisi, namun field hasil masih kosong (atau null), maka kita bisa menggunakan query UPDATE seperti berikut ini:
UPDATE angka SET hasil= angka1*angka2;
Semoga bisa membantu,.. :)
halo, saya mau nanya, kalo menggunkan inner join dalam 1 table (wordpress) gimana ya?
+—-+———+—————+—————+———-+
| id | form_id | element_value | element_label | group_id |
+—-+———+—————+—————+———-+
| 1 | 1 | Jim | first | 1 |
| 1 | 2 | Carey | last | 1 |
| 1 | 3 | Male | gender | 1 |
| 1 | 4 | 34 | age | 1 |
| 1 | 1 | John | first | 2 |
| 1 | 2 | Doe | last | 2 |
| 1 | 3 | Male | gender | 2 |
| 1 | 4 | 22 | age | 2 |
| 1 | 1 | Vick | first | 3 |
| 1 | 2 | Zoo | last | 3 |
| 1 | 3 | Female | gender | 3 |
| 1 | 4 | 43 | age | 3 |
+—-+———+—————+—————+———-+
mau dijadikan tabel dengan format -first-last-gender-age-
row to column maksudnya, mohon bantuannya, thank you
Mohon maaf mas, untuk saat ini saya belum bisa membantu karena kode MySQL yang diperlukan cukup rumit. Sebagai alternatif solusi, silahkan membaca kasus yang sama di stackoverflow: http://stackoverflow.com/questions/16568228/how-to-transpose-mysql-table-rows-into-columns. Terima kasih :)
mas.. coding
SELECT id_penyakit, nama_penyakit
FROM cf INNER JOIN penyakit ON cf.id_penyakit=penyakit.id_penyakit where id_penyakit = "P1"
masih timbul pesan error ambigu, salahnya dimana y ?
Masalahnya terletak di kolom id_penyakit gan.
Kolom id_penyakit ada di kedua tabel, sehingga MySQL "bingung" mau menggunakan kolom id_penyakit dari tabel yang mana. (Errornya terdapat pada bagian SELECT id_penyakit, dan bagian where id_penyakit = "P1")
Solusinya, kita harus memberitahu MySQL bahwa kolom id_penyakit itu adalah "milik" tabel cf, atau "milik" tabel penyakit dengan menulisnya menjadi: cf.id_penyakit atau penyakit.id_penyakit.
Sebagai contoh, jika yang dimaksud adalah kolom cf.id_penyakit, query tersebut bisa ditulis ulang menjadi:
SELECT cf.id_penyakit, nama_penyakit FROM cf INNER JOIN penyakit ON cf.id_penyakit=penyakit.id_penyakit where cf.id_penyakit = "P1";
Semoga bisa membantu :)
Saya ingin menggabungkan 7 tabel dalam mysql query, yg tiap tabel berisi :
subcoa, keterangan, tgl, debit, kredit
bagaimana cara saya mendapatkan record smua data tersebut agar tampak seperti ini :
———————————————————————————
Tgl | Subcoa | Keterangan | Debit | Kredit |
———————————————————————————
|
|
|
|
|
( Record terus kebawah )
Mohon bantuan querynya :)
Terimakasih
Berarti struktur ke-7 tabel tersebut sama y? untuk hal ini kita bisa menggunakan query UNION.
Sebagai contoh, misalnya terdapat 3 tabel: tabel_1, tabel_2 dan tabel_3. Tiap tabel memiliki kolom: subcoa, keterangan, tgl, debit, kredit. Untuk menggabungkan ke-3 tabel menjadi 1 tampilan, berikut adalah query yang dibutuhkan:
SELECT tgl, subcoa, keterangan, debit, kredit FROM tabel_1 UNION SELECT tgl, subcoa, keterangan, debit, kredit FROM tabel_2 UNION SELECT tgl, subcoa, keterangan, debit, kredit FROM tabel_3
Apabila kolom sudah tersusun, querynya bisa menjadi lebih sederhana:
SELECT * FROM tabel_1 UNION SELECT * FROM tabel_2 UNION SELECT * FROM tabel_3
Untuk 7 tabel, kita tinggal menambahkan query tersebut sebanyak 7 kali.
Semoga bisa membantu :)
gan, aku mau tanya
aku mempunyai 2 table
1. tabel sekolah yang berisi idsekolah,nama sekolah dan kecamatan
2. tabel kecamatan yang berisi idkecamatan dan nama kecamatan
bagaimana saya meninsertkan tabel sekolah dengan catatn kecamatan itu mengisikan idkecamatan pada tabel kecamatan?
Kalau menurut saya, hal itu seharusnya memang dilakukan dua tahap gan.
Pertama kita harus mengisi seluruh kecamatan yang ada di tabel kecamatan, baru kemudian menginput masing-masing sekolah di tabel sekolah (dengan merujuk kepada kecamatan yang sudah tertera).
Oh ya, untuk kolom kecamatan di tabel sekolah, seharusnya hanya idkecamatan saja gan, supaya kedua tabel saling terhubung. Tetapi kalau langsung diinput dengan nama kecamatan, tabel kecamatan jadi tidak terhubung lagi.
request trigger om
Ditunggu saja y gan.. kebetulan sedang ada kerjaan offline buat sementara :)
kak, mau nanya, saya punya 3 tabel, untuk menggabungkan dan ngurutkat
select mahasiswa.nama, mahasiswa.kelas, dosen.nama_dosen
from mahasiswa inner join dosen
on matakuliah.kode_mk=perkuliahan.kode_mk
where matakuliah.nama_mk='Basis Data' order by nilai;
ini bener gak? tpi error, salahny dimana?
Itu tabelnya ada 3 atau 4 ya? karena saya lihat ada tabel mahasiswa, dosen, matakuliah, dan perkuliahan. Kalau dilihat sekilas dari query, seharusnya yang di join adalah tabel yang terdapat di query select (mahasiswa dan dosen), tapi dari query diatas, yang di join adalah tabel matakuliah dan perkuliahan. Mungkin bisa di cek lagi struktur tabelnya.. :)
izin bertanya pak :)
saya kan mempunyai 3 tabel misal tabel_proposal, tabel_anggaranmasuk, tabel_anggarankeluar.
misal baru input 1 proposal.
tabel_proposal mempunya id_proposal = 1
tabel_anggaranmasuk mempunya id_proposal = 1
tabel_anggarankeluar mempunyai id_proposal =1
sudah saya buat terhubung pak. Pertanyaannya , kalau pada tabel anggaran keluar memiki id_proposal yang sama lebih dari 1 pak
misal tabel anggaran keluar:
id proposal | jenis | pengeluaran
1 | konsumsi| 2000
1 | perlengkapan |3000
1 | publikasi | 4000
menggunakan inner join tadi saya malah keuar 3 proposal yang sama padahal saya baru menginputkan 1 proposal
bagaimana pak solusinya terimakasih :)
Menurut saya, perancangan struktur tabel sepertinya kurang tepat. Kolom id pada sebuah tabel seharusnya cuma bisa diisi 1 kali dan harus unik (tidak boleh ada yang sama). Umumnya kolom ini juga di-set sebagai primary key.
Tabel tabel_proposal diatas mungkin bisa dipecah lagi menjadi tabel_proposal dan proposal_detail. Di dalam tabel_proposal, kolomnya cukup:
id proposal | nama_proposal
1 | proposal_sekolah_2015
2 | proposal_perpisahan_2015
3 | proposal_seminar_01
Kemudian di tabel proposal_detail, bisa ditambahkan rincian proposalnya:
nama_proposal | jenis | pengeluaran
proposal_sekolah_2015| konsumsi| 2000
proposal_sekolah_2015| perlengkapan |3000
proposal_sekolah_2015| publikasi | 4000
Dengan demikian, proses JOIN table tidak terganggu dengan detail proposal :)
sya kan mempunyai 3 tabel penyakit, gejala, nilaicf
nah dalam tabel nilai cf berisi namapenyakit, namagejala, dan nilai MB .. data Namapenyakit saya ambil dari tabel penyakit dan namagejala saya ambil dr tabel gejala.
Masing2 tabel sudah punya primary key nya yakni id_penyakit , id_gejala dan id_nilaicf
yang ingin sy tanyakan kenapa saat sy sudah inputkan semua data , dan sy tekan submit maka di tampilan index , data namapenyakit dan namagejala tidak muncul ya?
<?php echo ''.$data['namapenyakit'].";
?>
Untuk hal ini harus dilihat kode program yang digunakan (kode PHP-nya).
Banyak kemungkinan sih, bisa di query MySQL atau kode HTML/PHPnya.
Oh ya, dikolom komentar ini tidak bisa diinput kode php/html secara langsung (untuk keamanan).
Mungkin bisa ditulis kodenya di pastebin atau semacamnya, dan dikasih link kemari :)
ini cuplikan kodenya sudah sy salin di pastebin .. klik saja linknya ^^
http://pastebin.com/S1dsz7eq
oh iyaa.. error yg muncul tulisnnya:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\tugasakhir\nilaicf\index-nilaicf.php on line 0
ini linknya
http://pastebin.com/S1dsz7eq
Kalau errornya adalah:
Warning: mysql_fetch_array() expects parameter 1 to be resource
Maka kemungkinan besar query yang dibuat ada kesalahan (tidak akan menghasilkan apapun).
Jika sebuah query tidak mengembalikan hasil apa-apa, fungsi mysql_query() akan mengembalikan nilai FALSE. Nilai FALSE kemudian diinput ke fungsi mysql_fetch_array(), dan tampil-lah kode kesalahan seperti diatas.
Dengan kata lain, yang dijalankan oleh PHP adalah:
mysql_fetch_array(FALSE);
Sehingga akan error :)
Untuk query yang cukup kompleks seperti itu sebaiknya dicoba secara manual dari cmd atau PHPmyadmin. Jika hasilnya sesuai dengan keinginan, baru pindahkan ke PHP.
Oh ya, kalau boleh saran, mungkin bisa beralih menggunakan mysqli, karena fungsi mysql sekarang sudah dianggap 'usang' dalam PHP :)
kalau dari kode ini ada yg salah ga?
select penyakit.namapenyakit, gejala.namagejala, nilaicf.id_nilaicf
FROM(penyakit INNER JOIN nilaicf on namapenyakit.penyakit=nilaicf.namapenyakit) INNER JOIN gejala on nilaicf.namagejala=gejala.namagejala order by id_nilaicf ";
sy otak atik kodenya dan sy menemukan kode yg cocok..
select nilaicf.namapenyakit, nilaicf.namagejala, penyakit.namapenyakit, gejala.namagejala
FROM penyakit INNER JOIN (gejala INNER JOIN nilaicf ON gejala.namagejala=nilaicf.namagejala) ON penyakit.namapenyakit=nilaicf.namapenyakit" ;
sy terapkan sudah tidak ada tulisan errornya lagi .. namun yg sy masih bingung , kenapa datanya tidak tampil ya? padahal di database sudah masuk datanya cuma pada bagian namapenyakit dan namagejala gag ada datanya ._.
##maaf banyak tanyaa
Kalau querynya diinput manual langsung ke MySQL (dari cmd atau dari phpmyadmin) ada hasilnya tidak? Kalau hasilnya sesuai, maka errornya sekarang ada di kode PHP yang digunakan. Mungkin bisa dibuat ulang kode PHPnya, disesuaikan dengan hasil dari MySQL.
Permisi, mohon bantuannya.
sy mempunyai 3 tabel yg terdiri dari :
Tabel datasiswa = nis, nama, kelas
Tabel kelas = kelas, pembayaran
Tabel transaksi = id, nis, tanggal
Saya ingin menampilkan data pembayaran persiswa yang terdiri dari :
nis, nama, tanggal, pembayaran
Query yg sy gunakan adalah "Select datasiswa.nis, datasiswa.nama, datasiswa.kelas, transaksi.tanggal from datasiswa, kelas, transaksi where datasiswa.nis=transaksi.nis and kelas.kelas=datasiswa.kelas and nis='1234567890" Tapi muncul pesan error ambiguous. Mohon bantuannya, thanks.
bantu jawab ya
select a.nis, a.nama, b.tanggal, c.pembayaran
from datasiswa a join transaksi b
on a.nis = b.nis
join kelas c
on a.kelas=c.kelas
group by a.nis, a.nama, b.tanggal, c.pembayaran
coba seperti ini saja
Thank You So much!
Terima kasih sharenya..
Ijin re-share.. :)
Izin bertanya gan… Saya memiliki 2 tabel didalam ke dua tabel mempunyai id nama alamat.. Pertanyaan ny gimana cara menggabungkan dan mengurutkan data tersebut gan..? Dengan catatan "ID" adalah primary key… Mohon bantuannya gan…
Maksudnya dalam kedua tabel ada 3 kolom y gan? Kalau begitu menurut saya lebih cocok menggunakan query UNION, seperti berikut ini (belum saya coba langsung):
SELECT ID, nama, alamat FROM table1
UNION
SELECT ID, nama, alamat FROM table2
ORDER BY ID;
Terimakasih banyak gan… Sangat membantu.. Sekarang permasalahannya primary key gak bisa sama tapi dengan nama yg beda ya gan… Contohnya id 1 nama doni dengan id 1 nama abi … Bagaimana cara membuat nya gan serta mengurutkan kan nya gan… Dengan hasilnya setelah diurutkan dan digabungkan id 1 dengan nama abi diatas gan karena abjad A dimulai pertama baru seterusnya id 1 nama doni. Mohon bantuannya ya gan…
i need your help brother…..
tentang php.bagaiman merelasikan tabel berikut,bier saling berhubungan
saya punya 3 tabel.
1.master kaps/stock
2.kapasmasuk/jumlah
3.kapaskeluar/jumlah.
bagaiman query untuk memanggil 3 tabel tersebut.
jika kapas masuk ,jumlah ditambah ke master,ototamatis jumlah stock nya bertambah dan sebaliknya jika ada kapaskeluar maka jumlah stock nya berkurang juga..
tolong bimbinganya brother…
Saya tampung dulu pertanyaannya y gan, soalnya ini membutuhkan waktu yang tidak sebentar dan juga butuh ratusan baris kode program PHP, Jika bersifat urgent mungkin bisa mencari jasa programmer :)
Permisi om…
klo boleh, sy mw share. Logikanya sprt ini om :
A. Untuk barang masuk :
1) Baca data stok dr tabel Master Barang dahulu, lalu disimpan di variabel misal X
2) Ketika form inputan barang masuk dieksekusi / "isset" button, tambahkan variabel "X" dengan jumlah barang masuk, misal "Y" lalu ditampung di varibel baru misal "Z". Jadi "Z = X + Y".
3) Pada saat eksekusi Query MySQL ada 2 query yg dieksekusi secara langsung. if ($tambah) { rubah_stok() }. Ketika query tambah / insert ke tabel barang masuk dieksekusi, maka menjalankan fungsi untuk merubah stok di tabel master barang juga.
4) Jadi isi variabel "Y" masuk ke tabel Barang Masuk (Insert) dan isi variabel "Z" masuk ke tabel Master Barang (Update).
B. Untuk barang keluar :
1) Cara'a sama seperti diatas cuma "Z = X – Y"
Nah…yg lebih mumet itu jika UPDATE Transaksi. hehe belom DELETE transaksinya.
Kurang lebih seperti itu om, jika ada salah kata / kurang tepat caranya mohon dimaafkan :-)
Terimakasih banyak untuk solusinya mas :)
mau nanya gan,
1. gimana caranya menghapus 3 tabel yang saling berelasi?
2. view data detail dari ketiga tabel yang berelasi?
maksudnya menghapus data dari 3buah tabel yang saling bereasi?
Sepengatuan saya ini cuma bisa dilakukan dari bahasa pemrograman tempat MySQL dijalankan gan, misalnya kalau kita menggunakan PHP, maka logika untuk menghapus data dari tabel yang berelasi ini dibuat di PHP, bukan dari MySQLnya.
MySQL sendiri hanya tempat menyimpan data, sedangkan logika apakah data ini perlu diupdate, delete, ditambahkan, dihapus, dll berada di bahasa pemrograman yang menggunakan database ini.
permisi mas, numpang nanya ni
saya mempunyai table customer dan rekening
saya ingin menampilkan total pelanggan perkecamatan yang saya inginkan dan status pelanggannya aktif
mohon bantuannya mas :)
berikut isi table customer : nama, alamat, kelurahan, kecamatan
rekening : nama, alamat, kelurahan, status_pelanggan
mau nanya mas
ilustrasinya gini :
saya mempunyai 2 tabel
tabel pertama bernama kursi digunkan untuk menyimpan data kursi dengan field id_kursi,nomor_kursi
tabel kedua namanya pesan digunakan untuk menyimpan data kursi yang sudah di pesan dari tabel kursi dengan field id_pesan, id kursi
yang ingin saya tanyakan misalnya tabel pertama memiliki 6 data kursi kemudian pada tanggal 6 oktober 2015 saya pesan kursi nomor 3 dan 4 bagaimana cara mendisable kursi yang sudah saya pesan, saya sudah mencoba menggabungkan kedua tabel dan hasilnya berhasil tapi jika saya pesan kursi pada tanggal yang berbeda dengan nomor yang sama maka pada gambar kursi akan bertambah misalnya pada tanggal 7 oktober 2015 saya pesan kursi nomor 3 dan 4 juga jika saya akan pesan lagi untuk kursi pada tanggal 7 oktober maka akan menampilkan 1,2,3,3,4,4,5,6 jadi nomor kursi yang di tampilkan berlebihan solusinya gimana mas?
maaf pertanyaanya jika terlalu panjang hehe
Kalau ingin membuat alur logika seperti ini menurut saya bukan di database lagi mas, tapi sudah di sisi aplikasinya (kalau menggunakan web, biasanya dengan PHP).
Misalkan ada user yang mau mesan, maka sebelum form ditampilkan, kita harus cek dulu ke database, kursi mana saja yang sudah berisi. Untuk kursi2 ini nanti tinggal disembunyikan saja di bagian form, jadi si user tidak bisa memilih kursi-kursi ini. Dengan begitu tidak akan ada nomor kursi yang double :)
gan mau nanya, kalau menggabungkan 2 tabel di mysql pake cmd tapi dengan beda database gimana caranya?
cara mencari tunggakan yang hanya menampilkan tunggakan 3 bulan saja bagaimana mas..? terima kasih
gan,,.
saya mempunyai 3 tabel,dan itu harus diga bung nama tabel nya tabel siswa,tabel pelajaran,tabel nilai dan raport,.
bagaimana cara menggabungkan
Pertanyaannya sangat dasar nih gan, hehe… kalau ingin menggabungkan tabel bisa dengan berbagai cara, yang paling simpel bisa digabung dengan perintah AND, OR, WHERE, dll. Ini juga tergantung seperti apa data yang ingin ditampilkan.
Sebagai solusi awal, bisa baca2 lagi tutorial MySQL yang ada di duniailkom, terutama tentang query SELECT.
gila nih web. gampang banget dipahaminya. rekomendasi buat temen dikampus nih.
thanks ya min…. perfect lah pokknya
Sama2 gan, saya juga senang tutorial yang ada bisa bermanfaat :)
Assalamu'alaikum…
Om…saya mau tanya. Misalkan sy hapus record "0160436012 Sabrina Sari 0812349900 Pekanbaru" dari tabel "daftar_dosen". Lalu bagamina caranya untuk menampilkan record di tabel "mata_kuliah" yang menggunakan NIP_dosen=0160436012 ???
Jadi ketika sy menghapus record dari tabel "daftar_dosen", record di tabel "mata_kuliah" yang menggunakan Foreign Key yg bersangkutan tidak mau tampil. Bagaimana cara'a agar tetap tampil meskipun nilai Foreign Key nya adalah 0.
Terimakasih banyak atas pencerahannya…
Wassalamu'alaikum…
Wa'alaikumsalam…
Kalau seperti itu bisa menggunakan LEFT JOIN, RIGHT JOIN atau FULL JOIN mas, kira2 seperti ini:
SELECT nama_matkul,jumlah_SKS,nama_dosen FROM mata_kuliah
FULL JOIN daftar_dosen ON mata_kuliah.NIP_dosen=daftar_dosen.NIP_dosen;
*query di atas belum saya test
Terimakasih om atas pencerahan'a :-)
Betul om ternyata pake LEFT JOIN. Jika menggunakan RIGHT JOIN hasilnya sama dengan INNER JOIN. Jika menggunakan FULL JOIN, maka kolom yg digabungkan tidak terbaca oleh kolom penggabung'a.
Semoga mjd pahala om dh bagi2 ilmu…
Amiin…
Makasih juga untuk do'anya mas Amir :)
min, saya punya kasus,
saya menggunakan combobox dinamis untuk input data
ilustrasi program
Tabel A (AKU, SAYANG, IBU)
Tabel B (AKU, SAYANG)
Tabel C (AKU)
untuk input ke tabel B menggunakan combo box dari Tabel A dengan melakukan filter, ketika Combo ditekan, option yg muncul hanya menyisakan data sisa (IBU). karena data (AKU, SAYANG) sudah ada di Tabel B
Begitu juga untuk Tabel C mengambil data dari B menggunakan Combobox.
bisa dibantu query nya?
saya sudah coba berulang2, amun hasilnya looping terus.
mohon pencerahannya
sudah solved mas.
SELECT id, nama FROM A WHERE id NOT IN (SELECT id FROM B)
smoga bisa berguna juga buat yang lain
Wah, terimakasih sudah posting solusinya juga mas, sudah pakai query NOT IN nih, mudah2an bermanfaat juga buat yang lain.
Thx artikelnya gan
mas saya mau tanya seumpama dengan cara begini
table A, table B,
select a.*, b.*
from A a, B b
where a.id_b = b.id_b
itu dikategorikan inner atau cross mas, suwun
saya mau nanya mas, saya bikin dua tabel.. tabel Perbaikan dan tabel Barang…
Isi tabel barang ada : kd_barang, tgl_beli, nm_barang,kategori,kondisi
Isi tabel perbaikan : kd_perbaikan, tgl_perbaikan, kd_barang,nm_barang, kerusakan, kondisi..
Yang ingin saya tanyakan adalah bagaimana menggabungkan kedua field pada tabel tersebut yaitu "kondisi".. Jadi, kalau "kondisi" saya edit di tabel perbaikan maka secara otomatis akan berubah juga pada tabel barang.. Tolong diberikan solusi gan.. Semoga ada jalannya gan hehehe, Terima Kasih
Menurut saya hal seperti ini sebaiknya dirancang di sisi programmingnya gan, bukan di database langsung. Misalnya nanti bisa dibuat pakai PHP (kalau aplikasinya berbentuk website). Jadi saat kita submit form, otomatis terupdate di dua tabel (tabel barang dan tabel perbaikan).
Mengenai caranya lumayan panjang nih, agan mesti paham PHP dan cara koneksinya dengan MySQL. Lalu membuat masing2 query.
mau tanya ttg FULL JOIN,,,pnya saya ad 2 tabel,,dosen & mahasiswa,,,setiap mau nampilkan full join selalu 'unknown column….in field list,,
pdahal kolomnya ada,,kira2 knpa ya?
Saya harus lihat seluruh tabel dan query yang agan bikin. Tp biasanya salah di penulisan query. Untuk sementara, agan bisa ikuti saja apa yang ada di tutorial ini :)
Bang ijin nanya. saya membuat sebuah pendaftaran online dimana kasus saya ini pengguna yang memiliki username dan password harus digabungkan, tabel yang saya gunakan untuk mengisi formulir ini adalah tabel user.
Tabel user ini memiliki primary key (id_user*, username, password, nama_lengkap, tanggal_lahir, alamat, jenis_kelamin) dan tabel ini berelasi ke tabel booking foreign key (id_user)
Dimana tabel booking ini mempunyai field, (id_formulir*, id_user**, id_program**, id_jadwal**, status_bayar, tanggal_daftar, tanggal_jatuh_tempo). sedangkan yang saya tampilkan untuk di formulirnya ada field2 yang ditabel booking, nah gimana caranya bang saya mengabungkan kedua tabel tersebut, dan pada saat sudah tersimpan data keduanya bisa tampil di tabel booking. (saya menggunakan codeigniter)
maaf kalau pertanyaan saya agak membingungkan ya bang :) mohon pencerahannya
Menurut saya coba dibuat tanpa code igniter dulu gan, biar lebih gampang ngatur logika n querynya. Untuk kasus seperti ini querynya dipecah2 saja, misalnya pada saat form submit, jalankan 2 query ke masing2 tabel. Ambil data dari form yang sesuai.
Biasanya juga akan ada halaman register untuk menginput seluruh data pengguna ke tabel user. Setelah itu baru pengguna login dan pilih booking. Ini lebih banyak diatur di PHPnya gan, bukan di MySQLnya.
Saran saya coba cari buku khusus yang membahas PHP MySQL gan, biar lebih jelas alur dari form ke database MySQL.
Oke, Bang Andre saya ambil sarannya….
Tapi kalau menurut Abang ni, bagaimana ya saya bisa mengambil filed2 yang ada di tabel_pendaftaran, soal nya saya coba ada error (Unknown column 'id_formulir' in 'field list') pas saya klik daftar, dia gak kenal dengan id_formulir.karena memang di user juga gak ada field id_formulir, cuman relasi aja dari tabel user id_user* ke tabel pendaftaran id_user**
mohon bantunnya
maaf bang, yang maksud itu klik daftarnya "menyimpan" data yang di isi
Kalau di tabelnya g ada kolom tersebut, tentu g perlu dibuat querynya gan. Btw ini kode programnya dibuat sendiri atau pakai punya orang y? soalnya kalau buat sendiri, seharusnya sudah paham kolom2 mana yang mesti diisi, gimana kode programnya, dll.
Saran saya masih sama seperti sebelumnya gan, mungkin bisa dipelajari lagi dasar PHP dan MySQL dulu, jangan buru2 pakai framework :)
terima kasih banyak sarannya gan dan udah cepat balas coment sya, sekarang saya udah paham maksud dari artikel diatas gan hehe.. ini disaranin dosen gan, buat skripsi saya gak bisa ambil yang gak framework lagi gan udah deadline 2bulan :( …step sekrang agan tau gak, source code function simpan sekali insert langsung masuk kedua tabel, kalau tau boleh dong gan bgi ilmunya, terima kasih
Saya belum punya gan. Tp kalaupun ada, saya yakin agan juga bingung cara makainya (selama belum paham dasar2 PHP dan MySQL). Walaupun disuruh mesti pakai framework, tp kita g bisa "lompat" langsung tanpa punya basic PHPnya.
gan saya punya pertanyaan
saya udah mencoba menggabungkan query nah pertanyaan saya
bagaimana cara menggabungkan hasil query nya contoh
hasil query join adalah :
ID sekolah | Usia | jumlah
1 | 24 | 1
2 | 22 | 2
4 | 23 | 3
1 | 25 | 1
3 | 25 | 1
2 | 26 | 1
2 | 28 | 1
2 | 32 | 1
1 | 33 | 1
gan saya punya pertanyaan tentang inner join 3 tabel….
inner join nya udah succes tapi yg saya mau tanyain bagaimana cara melakukan pencarian dengan
koding recordsource nya " Select penjualan.No_Kwitansi, penjualan.Tanggal, penjualan.Jam, penjualan.Nama_User, detail_penjualan.Kode_Barang, detail_penjualan.Jumlah, detail_penjualan.Total, barang.Nama_Barang, barang.Harga_Jual from penjualan INNER JOiN (barang INNER JOIN detail_penjualan ON barang.Kode_Barang = detail_penjualan.Kode_Barang) ON penjualan.No_Kwitansi = barang.No_Kwitansi"
mohon bantuannya Gan
Wah, perlu analisis yang cukup lama nih gan… saya tampung dulu ya, mungkin ada temen2 lain yang bisa bantu.
Tp kalau untuk pencarian, kita menggunakan perintah SELECT..LIKE, atau untuk yang lebih kompleks pakai REGULAR EXPRESSION. Contoh penggunaannya sudah ada di tutorial MySQL duniailkom, silahkan dibaca2 dulu:
https://www.duniailkom.com/tutorial-belajar-mysql-pencarian-data-dari-tabel-mysql-select-like/
https://www.duniailkom.com/tutorial-belajar-mysql-pencarian-data-dari-tabel-mysql-dengan-regular-expression-regexp/
mau bertanya bagaimana cara menampilakan tabel ini gan denggan inner join
tampilkan nama jurusan (field nim), nama angkatan (field nim), nim, nama,
nama agama, nilai, dan yang paling tinggi nilainya, mohon bantuanya krna ana coba eror terus
Saya tampung dulu y gan, kebetulan saat ini sedang ada kerjaan lain. Mungkin temen2 yang lain nanti bisa bantu juga…
mau tanya, bagaimana membuat query untuk badges, seperti category jumlah post nya tampil di sampingnya. saya sudah buat query dengan inner join.
$total_data = mysqli_num_rows(mysqli_query($conn,
"SELECT category.category_name, post.category_id
FROM post
INNER JOIN category
ON category.id = post.category_id
"));
tapi itu malah tampil semua baris nya pada setiap category nya.
bagaimana agar setiap category nya bisa terjumlah masing" sesuai dengan jumlah baris/post nya?
terima kasih pak
Saya tampung dulu y gan, soalnya pertanyaan seperti ini butuh analisis, belum lagi harus pelajari seluruh database dan codingnya agar "paham" hubungan satu tabel dengan yang lain. Atau mungkin temen2 lain ada yang bisa bantu…
Perbedaan join dan view apa ya ?
Dan kapan waktu yg tepat?
Makasih bang andre
Keduanya memang beda fungsi gan, Join adalah query untuk menyeleksi data, sedangkan view bisa disebut sebagai tabel virtual. Penjelasan tentang view bisa kesini: https://www.duniailkom.com/tutorial-belajar-mysql-pengertian-view-dan-cara-penggunaan-view-dalam-mysql/
Maaf menyimpang…
Kalo untuk operasi pertambahan data pada satu row kita tinggal gunakan sum.
Contoh select sum(nilaiX) as sumNilai_x…
Yang saya pertanyakan kalo operasi yg digunakan perkalian bagai mana.?
Saya kurang hapal fungsi2 bawaan MySQL gan. Tp kalau pengen melakukan operasi nilai seperti itu akan lebih gampang dari PHP. Nanti kita ambil seluruh data dari database, kemudian diproses dengan PHP, misalnya menggunakan sebuah perulangan, lalu hasilnya ditampilkan sebagai HTML.
permisi gan, saya lagi dapat proyek nih, , cuma kesusahan pasa bikin report dinamisnya.
mau manggil data dari database ( dari 2 kolom di database) menjadi satu kolom di report. caranya gimana yah ? -_-
o ia, , , pake library FPDF
Di tampung dulu y gan, pembahasan tentang FPDF cukup panjang nih, untuk sementara agan bisa baca2 dokumentasinya…
mas mohon bantuannya,
saya punya mslalah pda saat bikin query update dari 2 table (table 1 "tb_dosen : ['nip'], ['prodi'], ['alamat'], ['jenis_kelamin'], ['agama'], ['status_perkawinan'], ['username'], ['password'], ['id_dosen']" dan table 2 " tb_sj : ['nama']".
Datanya bisa terupdate, tapi masalahnya ['nama'] yang sudah terupdate semuanya menjadi sama, maksudnya semua data yang di kolom ['nama'] menjadi sama semuanya kira2 mslahnya dimana ya mas mohon bntuanya,
ini script update yang saya pakai mas :
$updateSQL = sprintf("UPDATE tb_dosen, tb_sj SET nama=%s, nip=%s, prodi=%s, alamat=%s, jenis_kelamin=%s, agama=%s, status_perkawinan=%s, username=%s, password=%s WHERE id_dosen=%s",
GetSQLValueString($_POST['nama'], "text"),
GetSQLValueString($_POST['nip'], "text"),
GetSQLValueString($_POST['prodi'], "text"),
GetSQLValueString($_POST['alamat'], "text"),
GetSQLValueString($_POST['jenis_kelamin'], "text"),
GetSQLValueString($_POST['agama'], "text"),
GetSQLValueString($_POST['status_perkawinan'], "text"),
GetSQLValueString($_POST['username'], "text"),
GetSQLValueString($_POST['password'], "text"),
GetSQLValueString($_POST['id_dosen'], "int"));
Kalau yang terupdate tidak sesuai, kemungkinan besar kondisi WHEREnya yang salah. Coba test secara manual isi dari $updateSQL. Misalnya echo "$updateSQL", lalu copy paste ke phpmyadmin.
trimakasih mas.. atas bntuannya.. ternyata sya slah di bagian WHEREnya …
thank you min, ini saya baru mau belajar. hahahak
Siip, lanjut gan.. semoga bisa bermanfaat :)
Min mau nanya kalau misalnya kita punya tabel "prodi" dia punya foreign key dari tabel "jurusan","fakultas" dan "jenjang" tetapi tabel "jurusan" tersebut juga sudah terbuat min dan juga punya foreign key dari tabel "fakultas" dan "jenjang" sebaiknya penulisan foreign key tabel fakultas dan tabel jenjang bagaimana ya? terimakasih min
G masalah gan, dalam teori database kan memang ada hubungan one to one, one to many, dan many to many. Jadi kalau ada tabel yang punya foreign key dari tabel lain memang harusnya seperti itu.
Untuk benar atau tidaknya design database tersebut, agan bisa coba input beberapa data, lalu buat query untuk mengambil data dari gabungan tabel2 itu. Kalau g ada kesalahan dan querynya terasa gampang, berarti sudah cocok. Tp kalau ketika membuat querynya agan sudah bingung duluan, berarti designnya perlu diperbaiki.
1. Jelaskan langkah-langkah dalam menganalisis teknik penggabungan data dari beberapa tabel
Silahkan di baca2 lagi catatan kuliahnya gan… kalau soal teori seperti ini saya sudah g hapal lagi.
Permisi saya mau nanya. Saya punya 2 tabel = mahasiswa dan dosen. Trus mo tampilin semua field berdasarkan kota=Jakarta dan mempunyai kode pos.
maaf mau tanya,, kalau kita udah buat rancangan database dengan beberapa tabel dan beberapa foreign key apakah saat kita input data semuanya harus di isi..?? ataukah yang sudah terkoneksi dengan foreign key hanya salah satu kolom yang diisi..??
terimakasih…
Soal harus diisi atau tidaknya, tergantung aplikasi yang akan dibuat. Apakah data itu penting atau tidak. Untuk form register di sebuah forum, kolom "alamat" mungkin boleh tidak diisi karena fungsinya g begitu penting. Tapi kalau untuk form register situs pengiriman barang, kolom alamat harus diisi dan tidak boleh kosong. Jadi silahkan nilai sendiri apakah data tersebut penting atau tidak.
Tapi kalau berhubungan dengan foreign key, data primary keynya mesti ada dulu, kalau tidak bagaimana caranya data ini nyambung ke primary key. Misalkan di tabel jurusan ada kolom NIP_DOSEN yang merupakan sebuah foreign key. NIP_DOSEN ini sudah pasti berasal dari tabel dosen. Tabel dosen ini sudah harus ada terlebih dahulu.
kalau dari contoh diatas itu gan, kan ada 2 tabel, tabel daftar_dosen dan tabel mata_kuliah, di hubungkan dengan NIP (foreign key tabel mata_kuliah), jika kita sudah mengisi tabel daftar dosen, kemudian kita mengisi tabel mata_kuliah apakah kolom NIP nya bisa otomatis terisi jika dikosongin.? atau harus diisi manual..?? jika dengan manual ada ketidakcocokan NIP apakah yang terjadi.?
Kalau langsung dari MySQL, kita memang harus ketik manual. Kalau tidak cocok atau ada salah ketik tentu datanya jadi berantakan.
Yang juga perlu diingat, database seperi MySQL ini hanya "tempat data". Aplikasinya sendiri bukan dibuat dari MySQL, tapi dari bahasa pemrograman lain seperti PHP.
Di PHP kita bisa merancang form yang datanya berasal dari beberapa tabel MySQL. Misalnya form input mata kulian, untuk kolom NIP dosen bisa dirancang nanti keluar pilihan (dropdown). User yang mengisi form hanya bisa memilih NIP yang sudah ada saja (diambil dari tabel daftar_dosen). Dengan demikian, datanya g akan ada yang salah.
Tabel yang kolomnya sebanyak 4 buah dan jumlah barisnya 6buah biasa ditulis ?. Tolong dibantu ya bang .
Hehe, bisa dibaca2 lagi catatan kuliahnya gan.. Lagipula di MySQL jumlah barisnya tidak terbatas…
Gan mohon bantuannya ini pemecahan masalahnya gimana ketika saya membuat 3 tabel dijadikan 1 view nah hasilnya jadi 3 kali berurutan dan beda dari tabelnya masing-masing;
SELECT calonmhs.id_calon, calonmhs.nama_calonmhs, jurusan.namajur, test.tgl_test, test.nilai, test.hasil FROM calonmhs, jurusan, test WHERE calonmhs.id_calon=test.id_calon;
+———-+—————+———————-+————+——-+——-+
| id_calon | nama_calonmhs | namajur | tgl_test | nilai | hasil |
+———-+—————+———————-+————+——-+——-+
| 09unr001 | Bejo | Manajemen Informatik | 2009-11-04 | 80 | Lulus |
| 09unr001 | Bejo | Sistem Informasi | 2009-11-04 | 80 | Lulus |
| 09unr001 | Bejo | Teknik Informatika | 2009-11-04 | 80 | Lulus |
| 09unr003 | Dimas | Manajemen Informatik | 2009-11-04 | 45 | Tidak |
| 09unr003 | Dimas | Sistem Informasi | 2009-11-04 | 45 | Tidak |
| 09unr003 | Dimas | Teknik Informatika | 2009-11-04 | 45 | Tidak |
| 09unr004 | Tasya | Manajemen Informatik | 2009-11-04 | 70 | Lulus |
| 09unr004 | Tasya | Sistem Informasi | 2009-11-04 | 70 | Lulus |
| 09unr004 | Tasya | Teknik Informatika | 2009-11-04 | 70 | Lulus |
| 09unr005 | Erika | Manajemen Informatik | 2009-11-04 | 50 | Tidak |
| 09unr005 | Erika | Sistem Informasi | 2009-11-04 | 50 | Tidak |
| 09unr005 | Erika | Teknik Informatika | 2009-11-04 | 50 | Tidak |
+———-+—————+———————-+————+——-+——-+
12 rows in set (0.09 sec)
Kalau gambaran tabel awalnya seperti ini;
SELECT *FROM calonmhs;
+———-+—————+———–+———–+——-+——-+
| id_calon | nama_calonmhs | tmpt_lhr | tgl_lhr | kdjur | email |
+———-+—————+———–+———–+——-+——-+
| 09unr001 | Bejo | Wates | 27-Apr-79 | TI | NULL |
| 09unr003 | Dimas | Palembang | 15-Jun-87 | TI | NULL |
| 09unr004 | Tasya | Jakarta | 1-Dec-88 | TI | NULL |
| 09unr005 | Erika | Jakarta | 6-May-90 | TI | NULL |
+———-+—————+———–+———–+——-+——-+
4 rows in set (0.04 sec)
SELECT *FROM jurusan;
+——-+———————-+——————-+
| kdjur | namajur | KPS |
+——-+———————-+——————-+
| MI | Manajemen Informatik | Andi Susilo,S.Kom |
| SI | Sistem Informasi | Suroso,MT |
| TI | Teknik Informatika | Hotman Hutapea,MM |
+——-+———————-+——————-+
3 rows in set (0.00 sec)
SELECT *FROM test;
+———-+————+——-+——-+
| id_calon | tgl_test | nilai | hasil |
+———-+————+——-+——-+
| 09unr001 | 2009-11-04 | 80 | Lulus |
| 09unr002 | 2009-11-04 | 90 | Lulus |
| 09unr003 | 2009-11-04 | 45 | Tidak |
| 09unr004 | 2009-11-04 | 70 | Lulus |
| 09unr005 | 2009-11-04 | 50 | Tidak |
+———-+————+——-+——-+
5 rows in set (0.00 sec)
Artikelnya bagus, penjelasan INNER JOIN nya sangat baik
nice gan
Maaf semuanya saya mau nanya, saat inner join malah muncul MySQL returned an empty result set (i.e. zero rows).(Query took 0.0006 seconds.) dan tabel joinnyatidak muncul masalahnya dimana yah?
Berarti querynya yang kurang cocok atau data yang dicari memang tidak tersedia. Kalau soal querynya, mesti dipelajari dulu struktur tabel yang digunakan.
MAS kok gak membuat sekalian tutorial utk LEFT JOIN, RIGHT JOIN, STRAIGHT JOIN, NATURAL JOIN, CROSS JOIN ?
sya bingung kalo cari referensii dari web lain kebanyakan tidak menjelaskan secara mendasar dan terperinci, saya suka sekali belajar di web ini, karane mas menjelaskan dengan sangat baik. mungkin bisa di pertimbangkan utk membuat tutorial seperti yg saya sebutkan di atas. terimakasih.
Iya nih belum sempat saya buat tutorialnya…
Request di tampung ya.. tapi bisa jadi materi lanjutan seperti ini akan saya bahas di eBook MySQL Uncover (sedang dalam proses penulisan), karena perlu pembahasan yang cukup panjang…
Maaf gan saya mau tanya mengenai INNER JOIN 2 tabel dan cara insert nya…
detail tabel_anggota ( no_anggota,nama_anggota,alamat,pekerjaan)
detail tabe_pinjaman ( id_pinjaman,no_anggota,nama_anggota,besar_pinjaman)
dan kueri yg saya buat…
detailnya
SELECT tabel_pinjaman.id_pinjaman,tabel_pinjaman.no_anggota,tabel_anggota.nama_anggota,tabel_anggota.alamat,tabel_pinjaman.besar_pinjaman
FROM tabel_anggota INNER JOIN tabel_pinjaman ON tabel_anggota.no_anggota=tabel_pinjaman.no_anggota
posisi skg tabel_anggota sdh terisi beberapa data….
yang ingin saya tanyakan ketika no_anggota di input pada textbox FORM, bagamana caranya nama_anggota dan alamat otomatis terisi pada textbox FORM…..
seprti layaknya proses perancangan FORM DI MS ACCESS…mohon PENCARAHANNYA GAN…
Ini berbasis web kan y? Kalau iya, sudah bagiannya PHP atau bisa juga menggunakan AJAX (gabungan PHP dan JavaScript).
Idenya, ketika form no_anggota selesai dipilih, persis saat cursor mouse keluar dari kotak tersebut, event JavaScript akan langsung aktif untuk mengambil data ke database MySQL lewat PHP di server (sistem AJAX)
Proses pembuatanny memang cukup kompleks, karena harus paham HTML, PHP dan JavaScript. Tutorial tentang proses AJAX seperti ini baru tersedia di buku JavaScript Uncover Duniailkom, dan sebelumnya juga harus paham tentang pemrosesan form PHP dan MySQL.
Thanks Gan..
namun kalau di JPA gimana yaa?
"SELECT noSewa, pembayaran.noKamar FROM penyewaan INNER JOIN pembayaran USING (noSewa)"
sintaks di atas jika menggunakan JPA itu bagaimana yaa?
terutama pada cara menulis sintaks JPA pada bagian pembayaran.noKamar dan INNER JOIN pembayaran.
Cari – cari di St*ckOverflow kurang mengerti gan…
thanks
gan sy mau buat satu input data untuk banyak tabel. jadi gini :
sy membuat satu input data untuk 12 tabel yaitu, tabel januari,februari sampai desember. jadi saat sy menginput data dengan pilihan bulan februari, maka data yang diinputkan tadi akan masuk ke tabel tabel februari. dan apabila sy menginput data dengan pilihan bulan april, akan masuk ke tabel april, begitu seterusnya. Agar tidak lagi repot membuat 12 form input juga, cukup satu form input saja. Mohon pencerahannya. Terima kasih.
Kalau yang seperti ini lebih banyak di programmingnya (PHP).
Nanti di tampung saja semuanya dalam 1 form, kemudian pada saat pemrosesan baru nilainya dipisah2. Artinya akan ada 12 query yang diinput ke masing2 tabel (ada 12 kali pemanggilan fungsi mysqli_query)
maaf mas , masih sangat pemula, baru belajar ..misal nis lokal nsm 10134768, dan tahun masuk 17 no urut 13 , jadi 101347681713 di simpan di database gimana kodingnya
Proses penggabungan karakter seperti itu sebaiknya dibuat di sisi programming, misalnya kalau di pemrograman web menggunakan PHP. Setelah digabung, baru diinput ke database MySQL.
Mas, saya mau tanya inner join dan relasi itu sama gak ya? Saya masih bingung soalnya soal relasi
Inner Join salah satu cara untuk menggabungkan hasil tabel, yakni salah satu cara untuk membuat relasi.
Tanpa inner join pun beberapa tabel juga bisa digabung, misalnya dengan membuat kondisi WHERE antar tabel, seperti: SELECT nama, alamat WHERE mahasiswa.nim = universitas.nim.
Kalau cara untuk hapus inner join nya gimana ya gan??
INNER JOIN ini hanya perintah query saja, tidak melekat di tabel. Jadi bingung juga bagian mana yang harus dihapus.
Mas, mau tanya
Klw kita hanya mau nampilin 1 data aja bgmna? misalkan hanya si yg punya nama budi aja. Intinya 2 tabel kita hanya mau 1 data yg tampil.
Terimakasih mas
Harus dianalisa dulu struktur tabelnya dan data apa yang ingin ditampilkan. Untuk menampilkan 1 data saja itu juga tergantung perintah SELECT yang dibuat, tidak terpengaruh dengan JOIN.
Misal: SELECT * mahasiswa WHERE nama="budi";
Itu akan menampilkan semua data dengan nama "budi". Tapi kalau datanya sudah melibatkan 2 tabel, harus dilihat dulu struktur tabelnya…
maaf gan mau tanya klo koding php untuk memasukan id dari table lain gmn
Jawabannya bisa sangat panjang nih, soalnya harus dipelajari dulu seperti apa struktur tabel tersebut. Belum lagi materi PHPnya. Saran saya sebaiknya cari buku atau tutorial untuk belajar PHP dan MySQL secara lebih dalam.
kak, saya kan punya dua tabel yaitu wali kelas dan kelas, bagaimana menyambungkannya sementara sudah saya sambungkan malah keluar bacaan error: relationship already exist?
mohon batuannya kak
Gan apakan ini bisa menggunakan where jadi misalnya kita hanya mengambil nama dosen tertentu saja ??
Yup bisa, nanti kondisi WHEREnya diletakkan di akhir.
misi mau tanya
saya kan buat form dimana yang isinya nama_lengkap (member) nama (mobil)
nah itu saya ingin memunculkan nya secara otomatis dan ada beberapa yang di inputkan oleh member
itu gmna ya caranya
saya sudah mengginakan inner join tpi di database tidak terbaca dan viewnya juga tidak mau muncul
tolong bantuannya
saya menggunakan Code igniter
Saya belum bisa bantu nih, karena banyak kemungkinan errornya, mulai dari apakah form sudah terkirim, apakah isian form sudah benar, apakah querynya sudah sesuai, apakah kode PHPnya tidak ada yang salah, dst. Harus dipelajari satu per satu setiap baris kode program.
Sebagai alternatif bisa tanya ke group Code Igniter Indonesia di Facebook.