Hallo! Selamat Datang di Marketplace produk digital, Freelancer terbaik di indonesia (67478 Members, 783 Products, 5290 Topic, 12955 Comments)

Query penjumlahan antar table berdasarkan tanggal inputan.

Dibuat
Login Terakhir 4 Bulan lalu,
Telah Dilihat 3255 Kali
pramadians Mengatakan : Sultan Account
  1. Assalamualaikum Warahmatullahi Wabarakatuh...
  2.  
  3. Selamat Malam Admin beserta teman-teman di forum ini.
  4.  
  5. Saya memiliki dua tabel (tbl_master dan tbl_entry). Dari kedua tabel tersebut akan dihasilkan OUTPUT. Saya mendapatkan masalah pada query penjumlahan antar tabel. adapun query yang saat ini saya tulis adalah sebagai berikut :
  6.  
  7. $hsl=$this->db->query("SELECT id_entry, kd_kec, tanggal, nama, SUM(entry1) AS entry1, SUM(entry2) AS entry2, SUM(entry3) AS entry3 FROM tbl_entry GROUP BY kd_kec DESC");
  8. return $hsl;
  9.  
  10. Bagaimana agar penjumlahan JOIN dengan tbl_master dapat dilakukan. Karena setelah saya lakukan Join table terdapat error yang menyatakan Ambigu pada kd_kec nya.
  11.  
  12. Adapun simulasi tabel-tabel tersebut TERLAMPIR. Terimakasih sebelumnya kpd admin beserta teman2 yang telah menyempatkan waktunya untuk memecahkan masalah ini.
Ada 1 File Kiriman :
1. laporan.xlsx (11 KB)

Ada 11 Jawaban

pramadians
commented on 23 Nov 2021 09:03:38
  1. Assalamualaikum,.. Mohon Pencerahan nya Admin dan teman-teman.... Terimaksih
Robby Prihandaya
commented on 23 Nov 2021 10:36:52
  1. Assalamualaikum,.. ngemeng2 itu relasi antar table master dan input salah gan,
  2. akhirnya nanti akan terjadi duplikat data pada table entri, dan untuk report pun gak efektif,
  3. dan juga jika data entry dalam jumlah banyak maka prosespun akan jadi sangat lelet.
  4.  
  5. harusnya di table entri cukup di relasikan dengan filed id, bukan field nama, dan bisa dihapus saja field kd_kec, dan nama, silahkan pelajari lagi cara merancang database yang baik dan benar melalui buku ini : https://members.phpmu.com/kontribusi/detail/ebook-mysql-dari-pemula-hingga-mahir
  6.  
  7. Berikut ini Query yang benar untuk mendapatkan hasil perhitungannya :
  8.  
  9. SELECT a.nama,b.v1_lalu,b.v2_lalu,b.v3_lalu,c.v1_sekarang,c.v2_sekarang,c.v3_sekarang,d.v1_total,d.v2_total,d.v3_total
  10. FROM (SELECT * FROM tbl_master) as a LEFT JOIN
  11. (select id, tanggal, sum(entry1) as v1_lalu, sum(entry2) as v2_lalu, sum(entry3) as v3_lalu from tbl_entry where tanggal!=date(now()) GROUP BY id) as b on a.id=b.id
  12. LEFT JOIN
  13. (select id, tanggal, sum(entry1) as v1_sekarang, sum(entry2) as v2_sekarang, sum(entry3) as v3_sekarang from tbl_entry where tanggal=date(now()) GROUP BY id) as c on a.id=c.id
  14. LEFT JOIN
  15. (select id, tanggal, sum(entry1) as v1_total, sum(entry2) as v2_total, sum(entry3) as v3_total from tbl_entry GROUP BY id) as d on a.id=c.id
  16.  
  17. hasilnya bisa dilihat pada screenshot dibawah ini,
  18. sekalian kita share juga rancangan database yang benar.
Terdapat 4 File dilampirkan :
1. tbl_master.zip (823 B)
2. tbl_entry.zip (824 B)
3. rancangan_database_salah.png (25 KB)
4. hasil_query_fix_penjumlahan.png (57 KB)
pramadians
commented on 23 Nov 2021 10:39:40
  1. Assalamualaikum,.. Terimakasih pak pencerahannya
pramadians
commented on 23 Nov 2021 10:58:04
  1. Assalamualaikum,.. Terimakasih banyak pak robby telah meluangkan waktunya untuk memberi pencerahan. Untuk field (kd_kec dan nama) itu saya berikan karena untuk mengentry data dilakukan oleh dua orang user yang berbeda yaitu NM1 dan NM2 pada masing2 kecamatan (kec 5 dan kec 3), sehingga data yang memiliki kd_kec hanya dapat dilihat oleh masing-masing user. Untuk permasalahan query, itu dilakukan untuk output pada laporan admin. Dimana hasil penjumlahan (Total) didapatakan dari hasil penjumlahan tbl_vaksin + tbl_master utk masing2 kd_kec. Maaf Terlalu panjang penjelasannya pak. Terimakasih..
pramadians
commented on 25 Nov 2021 16:04:42
  1. Assalamualaikum,..
  2. Selamat Sore Admin dan Teman-teman....
  3.  
  4. Mohon pencerahan nya kembali admin,, Saya melakukan perulangan data dengan menggunakan foreach, namun hasil yang di peroleh terjadi double data. adapun hasil foreach tersebut terlampir.
  5.  
  6. Adapun script yang saya gunakan adalah sebagai berikut :
  7.  
  8. <tbody>
  9. <?php
  10. $no=0;
  11. foreach ($vaksin->result_array() as $a):
  12.  
  13. $no++;
  14. $nmkec =$a['puskesmas'];
  15. $v1tot =$a['tot_v1_lalu'];
  16. $v2tot =$a['tot_v2_lalu'];
  17. $v3tot =$a['tot_v3_lalu'];
  18. ?>
  19.  
  20. <?php
  21. foreach ($now->result_array() as $b):
  22.  
  23. $v1now =$b['vaksin1'];
  24. $v2now =$b['vaksin2'];
  25. $v3now =$b['vaksin3'];
  26.  
  27. $v1max =$v1tot+$v1now;
  28. $v2max =$v2tot+$v2now;
  29. $v3max =$v3tot+$v3now;
  30. ?>
  31.  
  32. <tr>
  33. <td align="center"><?php echo $no;?></td>
  34. <td align="left"><?php echo $nmkec;?></td>
  35. <td align="center"><?php echo $v1tot?></td>
  36. <td align="center"><?php echo $v2tot?></td>
  37. <td align="center"><?php echo $v3tot?></td>
  38. <td align="center"><?php echo $v1now?></td>
  39. <td align="center"><?php echo $v2now?></td>
  40. <td align="center"><?php echo $v3now?></td>
  41. <td align="center"><?php echo $v1max?></td>
  42. <td align="center"><?php echo $v2max?></td>
  43. <td align="center"><?php echo $v3max?></td>
  44. </tr>
  45.  
  46. <?php endforeach;?>
  47. <?php endforeach;?>
  48. </tbody>
  49.  
  50. Terimakasih sebelumnya admin dan teman-teman
pramadians
commented on 26 Nov 2021 08:49:07
  1. Assalamualaikum,.. Selamat pagi admin dan teman-teman.
  2.  
  3. Mohon pencerahan nya atas kendala foreach yang saya alami. Terimakasih
Hardiansyah
commented on 26 Nov 2021 10:51:25
  1. Assalamualaikum,.. tentu saja berulang krn end foreachnya kedua setelah satu baris tabel selesai, krn data yg dibutuhkan cmn hasil penjumlahan maka endforeach kedua nya setelah data2 kedua di temukan, btw coba mas pelajari subquery atau join agar lebih maksimal kecepatan pembacaan data
pramadians
commented on 26 Nov 2021 14:32:43
  1. Assalamualaikum,.. Terimakasih pak Hardiansyah sudah coba membantu menjawab permasalahan ini. Saya membuat perulangan dengan dua foreach karena saya menggunakan dua query yang berbeda dengan hasil yang berbeda pula, namun harus ditampilkan pada satu table. Query nya saya letakkan pada folder Model (Saya menggunakan framework codeigniter). Adapun Query tersebut adalah sebagai berikut :
  2.  
  3. Query Pertama ($vaksin)
  4.  
  5. SELECT (m.vak1_lalu+v.v1) AS v1_lalu,(m.vak2_lalu+v.v2) AS v2_lalu,(m.vak3_lalu+v.v3) AS v3_lalu
  6. FROM tbl_master m LEFT JOIN v_vaksin v ON m.kd_kec=v.kd_kec
  7.  
  8. Qury Kedua ($Now)
  9.  
  10. SELECT tbl_vaksin.* FROM tbl_vaksin,
  11. (SELECT kd_kec,MAX(tanggal) AS tanggal FROM tbl_vaksin GROUP BY kd_kec) max_user
  12. WHERE tbl_vaksin.kd_kec=max_user.kd_kec
  13. AND tbl_vaksin.tanggal=max_user.tanggal
  14.  
  15. Jika saya ingin menggunakan satu foreach saja, saya harus menggabungkan kedua query tersebut. Namun saya mendapatkan masalah dalam menggabungkan kedua qury tersebut. Bagaimana caranya agar kedua query tersebut dapat digabungkan pak, karena setelah saya coba beberapa kali hasilnya selalu error. Mohon pencerahan nya pak. Terimakasih
  16.  
pramadians
commented on 27 Nov 2021 11:15:40
  1. Assalamualaikum,.. Berikut saya lampirkan hasil dari query Pertama dan Query Kedua. Mohon Pencerahan nya Admin beserta teman-teman untuk menggabungkan kedua query ini. Terimakasih Sebelumnya.
Terdapat 2 File dilampirkan :
1. Hasil_Query_pertama.jpg (79 KB)
2. hasil_query_kedua.jpg (115 KB)
PHPMU.COM Support
commented on 27 Nov 2021 11:54:08
  1. Assalamualaikum,.. sekilas terlihat query 1 dan query 2 tidak ada keterkaitan/relasi data atau foreigh key, jadi tidak bisa digabungkan Query 1 dan 2, itu terjadi karena salah dalam merancang database seperti yang di infokan oleh pak Robby diatas, perbaiki dulu rancangan databasenya.
  2.  
  3. Rancangan database yang baik akan mempermudah dalam pembuatan dan pengembangan aplikasi.
pramadians
commented on 28 Nov 2021 07:44:35
  1. Assalamualaikum,.. Terimakasih pak atas sarannya. Memang dari awal saya sdh menduga bhwa kedua query tersebut tidak dapat di gabungkan, maka nya saya menggunakan dua foreach pada view laporan. saya pikir dengan foreach bersarang/bertingkat, query nya dapat bersatu menjadi satu row dalam satu table. ternyata double hasilnya, seperti script foreach yang telah saya publish. Baiklah pak, utk selanjutnya saya coba perbaiki lagi table2 databasenya. Oh iya,, script query yang di publish oleh pak Robby, saya modif sedikit pak, namun hasilnya belum sempurna. adapun hasil nya sampai saat ini saya lampirkan. Sekali lagi saya mohon pak utk pencerahannya, Terimakasih.
Terdapat 1 File dilampirkan :
1. query_baru.jpg (323 KB)
Maaf, Untuk Memberikan Komentar Anda Harus Login !!!