Melanjutkan artikel sebelumnya, pada kesempatan kali ini kita akan membahas cara untuk menghitung jumlah baris pada field (kolom) tertentu dengan kondisi tertentu pada MySQL.
Persiapan Data
Tabel dan hubungan antar tabel yang akan kita gunakan pada tutorial kali ini sama seperti pada artikel sebelumnya yaitu tampak seperti gambar berikut:
Download File SQL
File SQL diatas dapat digunakan untuk membuat semua tabel yang diperlukan beserta contoh datanya.
Menggunakan Fungsi COUNT IF
Seperti kita ketahui, untuk menghitung row (baris) pada tabel, kita menggunakan fungsi +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 yang otomatis akan menghitung jumlah row yang ada (row dengan nilai +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+47 tidak akan dihitung).
Kriteria untuk menghitung baris dapat dilakukan dengan 2 cara yaitu dengan:
- +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+48 yang akan menghitung semua row pada semua kolom. Hasilnya akan diambil dari kolom yang memiliki jumlah row paling banyak.
- +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+49 yang akan menghitung row untuk kolom tertentu.
Sedangkan berdasarkan pengambilan datanya, fungsi +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 dapat ditulis dengan atau tanpa klausa +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+51, yaitu:
- +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 untuk menghitung semua row walaupun ada duplikasi data.
- +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+53 untuk menghitung row yang unik (data yang sama tidak dihitung).
Melanjutkan artikel sebelumnya, sekarang kita akan menghitung jumlah item yang terjual berdasarkan tahun penjualan, query yang kita gunakan:
SELECT COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualanHasil yang kita peroleh:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+Selanjutnya, jika kita ingin mengelompokkan hasil tersebut berdasarkan field atau kolom tertentu misal +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+54 maka field tersebut dapat kita kelompokkan menggunakan klausa +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+55. Contoh:
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelangganMaka hasil yang akan kita peroleh:
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+Terakhir, mari kita tampilkan informasi data pelanggan dengan cara menggabungkan tabel penjualan dan tabel pelanggan. Adapun query yang kita perlukan:
SELECT id_pelanggan, nama, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan LEFT JOIN pelanggan USING(id_pelanggan) GROUP BY id_pelangganHasil:
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+Penting diperhatikan bahwa antara +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 dengan tanda kurung buka tidak boleh ada spasi, misal: +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+57  jika tidak, maka query akan berhenti dan muncul pesan error: +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+58
Lebih Lanjut
Fungsi +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 ini juga sering digunakan untuk membuat pivot table. Pembahasan mengenai cara membuat pivot table dibahas pada artikel:
- Pivot Table Dengan MySQL – Panduan Lengkap
- Pivot Table Dinamis Dengan MySQL
- Pivot Table Dengan PHP dan MySQL
Demikian tutorial mengenai penggunaan fungsi+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+60, jika kasus yang sobat alami berbeda, silakan baca komentar dibawah artikel ini, mungkin solusinya ada disana.
Jika rekan rekan mengajukan pertanyaan seputar query, harap menyertakan contoh tabel data dengan jelas serta contoh hasil tabel yang diinginkan
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.
agusph says:
Sebaiknya tidak menggunakan perintah +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+61 mas, karena perintah tersebut sudah deprecated dan akan di hilangkan di PHP versi 7, sebagai gantinya, coba biasakan menggunakan +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+62 atau +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+63.
Saya kurang paham dengan filed yang mas tulis di perintah mysql (source, inquiry) sepertinya tidak ada hubungannya dengan yang ditanyakan.
Untuk jawaban prtanyaan diatas, yang pertama dipahami bahwa jika menggunakan fungsi agregat seperti +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+64, +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+65, +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+66, dll, maka mysql akan otomatis melakukan group, sehingga kita tidak perlu menuliskan perintah +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+55, yang kedua gunakan tanda backtick (`) untuk penulisan tabel dan field yang namanya sama dengan nama perintah mysql, pertanyaan diatas menggunakan tabel order yang akan bentrok dengan fungsi MySQL yaitu ORDER BY sehingga perlu di beri backtick, untuk querynya bisa dicoba seperti ini:
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014Jika ingin mencoba menggunakan PDO, bisa dicoba contoh berikut:
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) )Demikian mas, semoga dapat membantu….
agusph says:
Sepertinya tanggalnya ngga disimpen di database ya mas?
dengan asumsi sudah ada field tgl di tabel:
WHERE harus ditulis sebelum GROUP BY, sehingga coba diubah querynya menjadi:
selanjutnya jika masih terdapat error, coba sebelum $result di echo querynya +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+68, coba perhatikan sudah betul belum. Sebagai tambahan, untuk mengambil data diantara dua periode, jika format data tanggal nya sudah y-m-d, tinggal langsung pakai between saja, contoh:
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs;jika format tanggal belum sama, bisa diubah dahulu dengan fungsi STR_TO_DATE, misal format tanggal masih dd/mm/yy menyambung contoh diatas, periode: 01/06/2015 s.d 01/09/2015, querynya:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+0Demikian, semoga dapat membantu
agusph says:
Untuk membuat seperti itu bisa menggunakan LIMIT mas, ambil dua baris terakhir, misal contoh tabel:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+1SQL nya:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+2Pada LIMIT, kita harus mengetahui jumlah seluruh rows di kurangi-2, contoh diatas jumlah rows 5-2 = 3. Karena pada LIMIT tidak bisa menggunakan variabel misal: +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+69 maka agak merepotkan, jika ID nya auto increment, SQL nya dapat diubah menjadi:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+3Selain itu jika ID nya sudah diketahui, dapat menggunakan query berikut:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+4Menurut saya sepertinya lebih reliable jika menggunakan ID sebagai penandanya, bukan rows, karena rows bisa berubah – ubah.
Salam..
agusph says:
Misal seperti ini mas:
t_barang:
Bisa menggunakan query berikut:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+7Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+8Kita perlu buat temporary tabel mas, untuk membuat resume dari tabel t_penjualan kemudian di joinkan ke tabel t_barang.
Semoga membantu
Salam...
agusph says:
Kalau saya lihat, datanya ngga ada yang unik mas, sehingga jika digabungkan, rownya akan dobel2, dan karena fungsi +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 digunakan untuk menghitung jumlah row, maka hasilnya akan tidak pas, untuk itu bisa dicoba dengan menggabungkan semua tabel menjadi temporary tabel dengan tambahan field untuk identitas masing-masing tabel, kemudian jalankan fungsi +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46. Query penggabungannya:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+9Hasil penggabungan:
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan0Selanjutnya buat query +-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+46 nya:
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan1Hasil:
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan2Semoga membantu…
Salam.
rizki says:
makasih mas sudah di respon maaf baru bales….
tetep ga muncul mas knapa yah maklum newbie…hikshiks
jadi gini maksudnya mas misalkan saya punya 1 tabel master 3 tabel transaksi
trus tabel transaksi saya pisahkan jadi 3 soalnya setiap transaksi nomorya beda2…
nah saya jadi bingung sendiri pas mau buat laporan rekap ke pdf perbulan berdasarkan tanggal transaksi
karna tabel transaksinya terpisah….tadinya rencana saya mau buat satu tabel transaksi kosong yg
fieldya sama seperti 3 tabel transaksi untuk menampung/menjadikan 1…
3 tabel transaksi jadi pada saat ada poroses transaksi dari 3 tabel tersebut otomatis tersimpan
ke tabel penampungan tersebut biar gampang rekapnya taunya malah makin bingung sendiri gak karuan…hikshiks
skali lagi maklum newbie baru belajar mohon bantuan dan bimbinganya mas….makasih
ini contohya mas….
Master
id_master
nama
jenis
stok
transaksi_jenis_a
id_transaksi_a
id_master
tanggal_transaksi_a
jenis
jumlah
transaksi_jenis_b
id_transaksi_b
id_master
tanggal_transaksi_b
jenis
jumlah
transaksi_jenis_c
id_transaksi_c
id_master
tanggal_transaksi_c
jenis
jumlah
Norma Fitra Pusta Rahma says:
maaf mas mau tanya, klo misal mau ngitung seperti ini jumlah yang mendaftar nya, laki-laki nya, perempuangnya dll seperti tabel dibawah ini yang kosong, gmn ya mas?
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan4tabel masternya seperti ini
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan5app_registrasi 4 = diterima
pilihan_prodi 101 = manajemen
102 = akuntansi
103 = ekonomi islam.
saya sudah mencoba seperti ini tp gak bs, agak bingung memang.
$dtpendaftar=mysql_query(“select count(id_daftar) as num from ‘pendaftar’ where pilihan_prodi=’101′ and th_akademik=’1′ “);
$result=mysql_fetch_assoc($dtpendaftar);
$jml=$result[‘num’];
echo”$jml”;
rangga says:
maaf mas numpang tanya, sebenarnya saya ingin buat tampilannya seperti ini mas :
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan6dan tabelnya seperti ini :
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan7kecamatan 1=tebet
kelurahan 2=bukit duri
rw 1=RW01
penyakit 4=campak
penyakit 3=diare
penyakit 2=dbd
status 1=penderita
status 2=meninggal
saya bingung menghitung jumlah dimasing masing kolomnya, itu bagaimana caranya mas. mohon bantuannya
agusph says:
Sebenernya logikanya hampir sama ketika kita menggunakan bahasa pemrograman mas seperti PHP, di MySQL,
untuk membuat resume per kolom, gunakan fungsi agregate mas seperti SUM, AVG, COUNT, dll. Jika kondisi yang disyaratkan hanya satu, kita bisa menggunkan IF, jika lebih dari satu menggunkan CASE. untuk solusi diatas, coba gunakan query ini mas:
Hasilnya:
SELECT id_pelanggan, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan GROUP BY id_pelanggan9hanif says:
mas mohon dibantu cara membuat querynya…
bingung cara menampilkan query untuk data bulan sebelummnya..
SAYA INGIN MANMPIKAN DATA SEPERTI DI BWAH INI
MISAL BULAN LALU JANURI, BULAN INI FEBRUARI
adhep says:
Maaf mas mau tanya, saya punya 3 tabel:
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+2select mbarang.kd_brg,mbarang.nm_brg,sum(brgkeluar.jml_keluar)as keluar,
sum(brgmsk.jml_msk)as msk from mbarang inner join brgkeluar on mbarang.kd_brg=brg
keluar.kd_brg inner join brgmsk on brgmsk.kd_brg=brgkeluar.kd_brg group by mbara
ng.kd_brg,mbarang.nm_brg;
supaya hasilnya seperti dibawah ini gimana ya mas saya sudah coba tetapi tidak sesuai
jumlah keluar harusnya 15 bukan 30 dan jumlah msk harusnya 6 bukan 12 stok jg tidak muncul
trimaksih mohon bantuannya
Ryan says:
mas saya mau bertanya , cara mngitung count berdasarkan tanggal dengan berdasarkan 3 tabel gimana ya mas,
berikut bentuk tabelnya mas
Dan Hasilnya pengennya sperti ini mas :
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+6Mohon Pencerahannya mas, terima kasih banyak mas
agusph says:
Yang penting untuk diperhatikan adalah ketika menggabungkan tabel, perhatikan apakah ada id yang akan kita jadikan referensi, jika YA maka kita lakukan join, jika TIDAK, maka kita gabungkan seperti biasa menggunakan union, untuk kasus diatas, kita gunakan union, kemudian kita buat identifikasi untuk masing masing tabel, dari data yang ada bisa menggunakan awalan dari id masing masing tabel (S, G, U), setelah itu kita kelompokkan dan hitung row untuk masing masing tabel, querynya sebagai berikut:
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+7Hasil:
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+8Demikian mas, semoga dapat membantu
omah says:
iya pak , terimakasih untuk penjelasannya ,, untuk menampilkan ini saya sudah berhasil untuk menggabungkan 3 tabel,,,
+--------------+-----------+----------+-----------+----------+ | id_pelanggan | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+-----------+----------+-----------+----------+ | 1 | 4 | 5225000 | 1 | 2450000 | | 2 | 1 | 1500000 | 2 | 4000000 | | 3 | 2 | 6499000 | 1 | 2730000 | | 4 | 1 | 2900000 | 1 | 775000 | +--------------+-----------+----------+-----------+----------+9tanya saya lagi…
bagaimana caranya untuk menampilkan data satu saja untuk NAMA_BAGIAN , apakah ini menggunakan perintah count ???
mohon pencerahannya pak,,,
najib says:
Assalamu alaikum, Mas. Mohon bantuannya sedikit nih mas, saya menghadapi kesulitan menentukan sintaksnya.
nama database: sipanter2
nama tabel: contoh
jadi, saya mau menampilkan id, nama, alamat, dan kode yang memiliki status ‘RUMAH KOSONG’ sebanyak 3 kali.
mohon bantuannya mas… 🙂
Erwin A says:
permisi mas, mau tanya nih, saya bikin aplikasi delphi, database mysql, ada menu rekap absensi nih mas, masalahnya memungkin ngak sql menghitung jumlah data yang sama di setiap baris bukan kolom, seperti menghitung jumlah hadir siswa, contoh tabelnya kayak dibawah nih mas,
SELECT id_pelanggan, nama, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan LEFT JOIN pelanggan USING(id_pelanggan) GROUP BY id_pelanggan1nb :1,2,3,4… dst itu tanggal
K itu berarti hadir, A itu alpha
jd saya pengen hitung jumlah K dan A setiap baris bukan kolom
kira-kira hasil akhirnya seperti ini mas
tolong dibantu mas, terimakasih
roy says:
mohon bantuan mas agus, saya ingin menampilkan data yang tidak sama berdasarkan kataegori dan id_usernya,
database saya begini mas :
yang ingin saya tanyakan bagaimana cara menampilkan data table jenis berdasarkan kategori dan user yang tidak ada dalam tabel keahlian, contohnya begini mas :
anggap saja id_users = 1, maka data yang ingin tampil adalah
mohon bantuan untuk koding lengkap php nya ya mas :
soalnya masih belajar ini mas…
terimakasih sebelumnya
Silvia Dewi says:
Mas mohon bantuannya sudah 3 hari masih belum berhasil.
Penerimaan siswa baru berdasarkan kapasitas (daya tampung per jurusan).
Misal pendaftar ada 600 orang. Daya tampung jurusan Akuntansi 100 orang, Multimedia 100, Administrasi 80, hotel 50, pemasaran 50. Setiap pendaftar bisa memilih 2 pilihan jurusan. Siswa diterima bedasarkan nilai tertinggi dan prioritas diterima adalah pilihan pertama misal A memilih jurusan Ak dan hotel. jika nilainya 100 tertinggi maka masuk akuntansi, jika bukan 100 teringgi baru dilihat apa pilihan 2 nya masih kosong atau tidak.
Tabelnya :
S
shandy kassundra says:
mas saya mau tanya kalo mau menghitung total jumlah absensi setiap siswa baik itu(hadir,izin,alpa)
SELECT id_pelanggan, nama, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan LEFT JOIN pelanggan USING(id_pelanggan) GROUP BY id_pelanggan6jadi saya tau jumlah absensi per siswa kira2 seperti ini
berdasarkan kelas yg ia ikuti,
agusph says:
Untuk membuat seperti itu, perlu diidentifikasi terlebih dahulu row yang dihasilkkan.
Dua baris pertama di group berdasarkan JK sedangkan 3 row berikutnya di group berdasarkan NILAI, disamping itu, di kolom Atribut terdapat dua kelompok nilai yang berbeda, yaitu JK dan NILAI, sehingga kita butuh dua query:
Hasil:
SELECT id_pelanggan, nama, COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, SUM(IF( YEAR(tgl_byr) = 2016, jml_byr, 0)) AS jml_2016, COUNT(IF( YEAR(tgl_byr) = 2015, jml_byr, NULL)) AS item_2015, SUM(IF( YEAR(tgl_byr) = 2015, jml_byr, 0)) AS jml_2015 FROM penjualan LEFT JOIN pelanggan USING(id_pelanggan) GROUP BY id_pelanggan9el says:
mas, saya ingin bertanya
saya punya tabel karyawan, absen, dan golongan.
pada tabel karyawan:
tabel absen :
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+1tabel gaji golongan :
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+2pertama absen diisi saat tambah pegawai
kemudian absen akan bertambah tiap hari (1hari = 1) tapi jika 1 hari pegawai
sakit/ijin/alpa akan dikurangi 1
contoh : jika dia menginputkan 20 hari, tetapi saat hari ke-20 memberi keterangan sakit
maka akan berkurang 19 hari
saya mau tanya bagaimana caranya menghitung gaji jika absen dan golongan yg diinputkan seperti contoh diatas
mohon bantuannya terima kasih.
djamal usman says:
mas gimana ya menampilkan data yang type data nya menggunakan ENUM,
jadi kasus saya ini ingin menampilkan absensi siswa dan menghitung jumlah kehadiran,sakit,izin, dan alpa, berdasarkan nis dan ruang kelas,aku menggunakan acount tapi gk bsa
ni tabel aku mas,tolong dong di buat pencerahan
djamal usman says:
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+4
ini isi ada di tabel absen nya mas
nah yang sya ingin ouput nya seperti ini mas
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+5agusph says:
Itu berarti kita tidak berpedoman sama bulannya mas, tapi periodenya, karena kita menghitungnya berdasarkan urutan row nya, tidak nama bulannya, seperti yang digunakan pada mic. Excel
Untuk itu kita menggunakan urutan di periodenya:
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+6Hasil:
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+7Itu gambaran awalnya mas, coba dikembangkan lagi ya mas
adit says:
mas minta tolong bantuanya yaaa.
saya mau buat rekap laporan produksi barang berdasarkan id produksi
Output yang saya harapkan seprti ini . pengambilan data barang di ambil berdasarkan kode produksi
+--------------+---------+-----------+----------+-----------+----------+ | id_pelanggan | nama | item_2016 | jml_2016 | item_2015 | jml_2015 | +--------------+---------+-----------+----------+-----------+----------+ | 1 | Alfa | 4 | 5225000 | 1 | 2450000 | | 2 | Beta | 1 | 1500000 | 2 | 4000000 | | 3 | Charlie | 2 | 6499000 | 1 | 2730000 | | 4 | Delta | 1 | 2900000 | 1 | 775000 | +--------------+---------+-----------+----------+-----------+----------+9Mohon Bantuanya ya mas…
terima kasih banyak
adit says:
mas minta tolong bantuanya ya.
*tbl barang_masuk
*tbl detail_barang_masuk
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20141*tbl_barang
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20142“jika saya melakukan rekap hanya dari tangal 01-1-2016 s/d 02-1-2016”
# tampilan yang saya harapkan seperti ini mas #
minta tolong bantuanya ya mas agus.
terima kasih banyak
agusph says:
Sepertinya tabelnya bisa di efisienkan lagi mas:
Tabel barang_masuk digabung dengan tabel detail_barang_masuk:
no | id_masuk |id_barang |jml_masuk | tgl_masuk | id_supplier
Dan perlu diperhatikan format tanggal yang disimpan di database sangat disarankan yyyy-mm-dd sehingga tidak menambah waktu untuk mengkonversi tanggal ke format sql
Untuk Querynya
Karena menggunakan batasan tanggal, kita cari detail_barang_masuk sesuai tanggal, maka kita gabungkan tabel barang_masuk dan detail_barang_masuk
Hasilnya:
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20145Selanjutnya hitung jumlah barang masuk:
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20146Hasil:
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20147Agus Prawoto Hadi says:
Coba query ini mas:
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20148Hasil
SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20149agusph says:
Querynya menghasilkan nilai kosong karena memang hasil count nya cuman 1 mbak, ketika dijalankan querynya
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 0Hasilnya:
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 1Jelas count(*) tidak ada yang nilainya lebih dari 2, sehingga hasilnya 0
Untuk menyelesaikan kasus diatas, setidaknya ada 2 logika yang harus dijalankan:
Pertama: kita cari no_trans yang muncul lebih dari 2 kali
Hasil:
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 3Kedua: kita cari data yang no_transnya hasil dari query diatas
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 4Hasil:
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 5Hygen says:
selamat pagi mas,
mohon bantuanya :
Saya punya 4 buah tabel
mohon bantuan mas, ngima cara menghitung jumlah hari kerja jika terdapat 4 buah table seperti ini, agar hasil yang di dapat
NIP Jumlah hari kerja,,
terima kasih banyak atas bantunnya,
sukses selalu
Jaka Linglunk says:
Mas, mohon pencerahannya lagi
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 7Mencari Query berapa banyak Gagal?
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 8Hasilnya Error mas. sudah saya bolak balik, tetep ga berhasil.
Saya ingin mencari jumlah gagal, jumlah berhasil, dan jumlah total (gagal dan berhasil)
tanpa menghitung cell yang tak terisi.
Mohon bantuanya mas. terimakasih sebelumnya.
Agus Prawoto Hadi says:
Coba pakai query ini mas:
$db_host = 'localhost'; $db_port = '3306'; $db_name = 'test'; $db_user = 'root'; $db_pass = ''; try { $pdo = new PDO( 'mysql:host='.$db_host.';port='.$db_port.';dbname='.$db_name , $db_user, $db_pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1) ); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { $errMessage = 'Gagal terhubung dengan MySQL' . ' # MYSQL ERROR:' . $e->getMessage(); die($errMessage); } $sql = 'SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 2014'; $stmt = $pdo->prepare($sql); $stmt->execute(); $result = $stmt->fetchAll(PDO::FETCH_ASSOC); print_r($result); // Result: Array ( [0] => Array ( [jml_order] => 2 ) ) 9Hasil:
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 0untuk di PHP nya tinggal disesuaikan mas
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 1boy says:
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 2
Halo mas, saya ingin mengisi data jumlah siswa yg ad pd tabel_kelas sesuai dengan jumlah siswa dg kelas tertentu (ex : II A) yg ad pd tabel_siswa, mohon bantuannya mas, makasih.
Adi says:
saya mau tanya gan,,
misal tabel nya seperti ini
Adi says:
ralat gan,, udah bener gan, heheheee
terimakasih gan…
oh iya ada satu lagi nih gan,
kalau ingin menampilkan jumlah jadwal dalam masing2 jenis olahraga gimana ya gan..??
status tabel jadwal induk nya dan tabel olahraga cabang nya, itu sudah dihubungkan dengan foreign key pada kd_olahraga (tabel jadwal)
hasil yang di cari tabel nya seperti ini gan;
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 7Agus Prawoto Hadi says:
Sama seperti sebelumnya mas, karena kita ingin menghitung jumlah baris, maka kita gunakan COUNT, nah karena kita ingin menghitung jumlah jadwal beserta namanya, maka kita bentuk terlebih dahulu tabel jadwal beserta namanya:
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 8Hasil:
$where = ''; if (isset($_GET['tgl_awal']) && $_GET['tgl_akhir']) { $tgl_awal = $_GET['tgl_awal']; //y-m-d $tgl_akhir = $_GET['tgl_akhir']; //y-m-d $where .= " AND tgl between '" . $tgl_awal . "' AND '" . $tgl_akhir . "'"; } $query = "SELECT source, COUNT(source) FROM inquiry WHERE agent='fendy chang'" . $where . " GROUP BY source"; $result = mysql_query($query) or die(mysql_error()); 9Selanjutnya kita hitung menggunakan COUNT
Hasil:
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 1Metode tersebut bisa digunakan dengan syarat nama jenis_olahraga nya sama persis untuk laki laki dan perempuan, jika tidak perlu digunakan cara lain
Agus Prawoto Hadi says:
Itu hanya lngkah langkah nya saja mas, intiya memang query yang kedua, menggunakan subquery.
Intinya kita samakan dulu nama jenis olahraganya.
Jika kita hanya menggunakan tabel jadwal, jenis_olahraga nya tidak bisa digabungkan, misal Bulu Tangkis BTL dan BTP tidak bisa dihitung menjadi 2 ketika di group, karena namanya beda, untuk itu kita buat namanya sama dulu yaitu Bulu Tangkis dan Bulu Tangkis (dengan subquery) sehingga jika di gabungkan akan dihitung 2
Contoh Lain:
Kita samakan dulu namanya:
Hasil:
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 3Selanjutnya kita group berdasarkan nama tersebut (Query jadi):
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 4Hasil:
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 5orlin says:
mas minta tolong bantuanya ya.
saya ada tabel seperti ini mas
*tbl nama_perumahan
*tbl_rumah
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 7# tampilan dinginkan seperti ini mas
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 8terima kasih banyak mas
Agus Prawoto Hadi says:
Coba query ini mas:
SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 9Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+00Pada query diatas, saya menggunakan nama rumah untuk menggabungkan tbl_perumahan dan tbl_rumah, idealnya untuk join tabel menggunakan ID, mungkin bisa ditambahkan field id_perumahan pada tbl_nama_perumahan dan tbl_rumah, di tbl_perumahan sebagai primary key, di tbl_rumah sebagai foreign key
Supriy says:
Mas/Bang – Salam kenal
Minta bantuan pencerahannya
saya punya tabel dengan gambaran sederhana Sebagai berikut :
Nomor 1
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+01Nomor 2
Data yg ingin sya tampilkan adalah sbb :
Nomor 3
Query yg sudah saya dapatkan sbb :
(“SELECT COUNT(IF(estate_code= ‘SSE’, asset_type, NULL)) AS jumlah_sse,
COUNT(IF(estate_code = ‘DOO’, asset_type, NULL)) AS jumlah_doo
FROM m_asset
GROUP BY asset_type”)
—————————————————————————————————————-
Hasil dari query yg sya buat tersebut sudah menghasilkan, akan tetapi belum bisa membedakan mana yang kondisinya Baik dan kondisi Rusak. sya sudah coba berlogika kesana-kemari tapi belum menemukan hasil dan setelah sya search GOOGLE, sya menemukan situs //jagowebdev.com
Pertanyaan : Bagaimana kira2 caranya supaya query tersebut bisa menghasilkan data sesuai dengan data yg ingin sya tampilkan pada Nomor 2
Mudah – mudahan gak bingung dengan pertanyaan yg sya ajukan… heheh… ribet muter2
Sekian, Terimakasih atas jawabannya
Salam dari Junior – Supriy
Agus Prawoto Hadi says:
Terima kasih atas kunjungannya mas. Querynya sudah hampir betul, yang perlu diperhatikan bahwa IF HANYA dapat digunakan untuk satu kondisi, karena kita akan membuat DUA kondisi, yaitu terkait estate_code dan asset_condition maka kita tidak bisa menggunakan IF, melainkan menggunakan CASE. Coba pakai query ini mas:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+03Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+04slamet riadi says:
mas bisa minta tolong?
saya sedang narik data dari mesin finger print hasil penarikan sudah saya olah menjadi strktur table seperti dibawah ini:
yang ingin saya inginkan output melalui php seperti dibawah ini:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+06satu masalah lagi data yang ketarik dari mesin absen mulai januari tahun 2016 hingga hari ini bagaimana caranya agar data yang ditampilkan hanya satu bulan yang lalu dari tanggal hari ini
mohon bantuannya sebelumnya terima kasih
Agus Prawoto Hadi says:
Untuk querynya bisa dicoba ini mas:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+07Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+08Pada query diatas, kita ambil jam masuk dari waktu minimal, untuk mengantisipasai jika ada yang absen masuk lebih dari satu kali, demikian juga dengan jam keluar.
Untuk waktu satu bulan dari sekarang, bisa menggunakan fungsi NOW() – INTERVAL 1 MONTH
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+09jani says:
selamat siang mas agus mau nanya saya punya masalah sebagai berikut :
berikut rumus yang saya buat di exsel+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+10
tampilan dan rumus ini saya mau ubah kedalam bentuk PHP
tapi hasilnya itu tidak sama persis dengan yang ada di exselan
bulan feb, mar ya itu muncul angka yang seharusnya dia itu “0”
bagai mana ya caranya biar sama dengan hasil yg ada di ekselnya dengan
terima kasih.
Agus Prawoto Hadi says:
Misal datanya di tabel forecast ya mas:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+11Apa maksudnya seperti ini mas?
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+12Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+13hygen says:
slmt sore mas, saya sudah coba tapi kalau query diatas, menghasilkan data 2017-02-23 | 23:00:00 | 2017-02-28 | 07:00:21 |
maksudnya saya :
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+14kalau menampilkan data seperti ini :
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+15terima kasih atas bantunnya
Agus Prawoto Hadi says:
Itu melibatkan banyak kondisi mas, akan sulit menggunakan murni sql:
Misal: absen pulang dua kali, atau absen pulang di tanggan dan bulan berikutnya seperti ini
Akan lebih memudahkan jika ada flagnya, misal:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+17Tapi saya rasa tidak mungkin menambahkan flag.
Tapi kalau mau coba pakai SQL bisa pakai SELF JOIN:
Contoh data:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+18+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+19Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+20Tapi query diatas tidak dapat mengakomodir pegawai yang tidak absen salah satu, masuk atau pulang. Sebaiknya olah data dari sisi aplikasi
sadewa says:
jadi begini mas,. saya lagi buat data absensi dimana datanya itu harus direport dalam tiap minggu kapanpun admin ngecek datanya.. ini contoh datanya :
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+21ketika user mengecek pada tanggal 8 maka data yang akan tampil hanya tanggal 8-2..
yang ingin dicetak contoh seprti ini mas:
di urutkan berdasarkan matakuliah yang telah dipilih mas
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+22apakah hal tersebut memungkinkan mas?
apakah ada hal lain yang bisa mempermudah mas ? mohon bantuannya
apa saya bisa minta kontaknya mas?
terimakasih sebelumnya
fatan says:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+23
menghitung jumlah kab berdasarkan id prov
menghitung jumlah kec berdasarkan id kab
querynya yang gimna mas?
igal says:
soalnya hampir sama dengan diatas, cma field jumlah kabupaten dan jumlah kecamatan dihilangkan
MariaDB [final_201611070]> select*from provinsi;
harman says:
mas mo tanya lagi ni mas…. soalnya gagal terus..
saya punya tabel seperti ini…
saya ingin menampilkan jadwal seperti pertanyaan saya diatas tapi berdasarkan kelas,, tapi setelah di tampilkan kode guru tidak muncul di di tabel jadwal ,, kira – kira gimna ya mas..??? mohon bantuannya..
wong fey hung says:
bukan cuma 10 database yang ditampilkan mas,,,
tapi 10 database di halaman 1, 10 database berikutnya di halaman2, dst,,, misal total database berjumlah 50database,,,
ini codingnya,,, :
btw yang sebelumnya kok codingnya kepotong ya,,, ?
Hasil Pencarian :
0)
{
echo “Ada $jml property yang cocok dengan pencarian $cariproperti di $wilayah”;
while($row = mysqli_fetch_array($db))
{
echo “”;
echo “Username : $row[1]”;
echo “Nama Property : $row[3]”;
echo “Wilayah : $row[7]”;
echo “Kategori : $row[8]”;
echo ”
$row[4]
“;
echo ”
“;
}
} else{
echo “Tidak ada property yang cocok dengan kata kunci $cariproperti di $wilayah”;
}
?>
<?php
}
elseif($wilayah ‘Semua Wilayah’)
{
$db = mysqli_query($con,”SELECT * FROM property WHERE kat_prop like ‘%”.$cariproperti.”%’ OR nm_prop like ‘%”.$cariproperti.”%’ OR des_prop like ‘%”.$cariproperti.”%’ OR username like ‘%”.$cariproperti.”%’ OR wilayah_prop like ‘%”.$cariproperti.”%’ OR harga like ‘%”.$cariproperti.”%'”);
$db2 = mysqli_query($con,”SELECT * FROM property WHERE wilayah_prop=’$wilayah'”);
$db3 = mysqli_query($con,”SELECT * FROM property WHERE wilayah_prop=’$wilayah’ AND kat_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND nm_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND des_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND username like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND wilayah_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND harga like ‘%”.$cariproperti.”%'”);
$jml = mysqli_num_rows($db);
$jml2 = mysqli_num_rows($db2);
$jml3 = mysqli_num_rows($db3);
?>
Hasil Pencarian :
0 && $jml2>0){
echo “Ada $jml3 property yang cocok dengan pencarian $cariproperti di $wilayah”;
while($row2 = mysqli_fetch_array($db3))
{
echo “”;
echo “Username : $row2[1]”;
echo “Nama Property : $row2[3]”;
echo “Wilayah : $row2[7]”;
echo “Kategori : $row2[8]”;
echo ”
$row2[4]
“;
echo ”
“;
}
} else{
echo “Tidak ada property yang cocok dengan kata kunci $cariproperti di $wilayah”;
}
}
?>
wong fey hung says:
$con=mysqli_connect(“localhost”,”root”,””,”putmapropertydb”);
// Check connection
if (mysqli_connect_errno())
{
echo “Failed to connect to MySQL: ” . mysqli_connect_error();
}
$cariproperti = $_POST[‘cariproperti’];
$wilayah = $_POST[‘wilayah’];
if ($wilayah == ‘Semua Wilayah’)
{
$db = mysqli_query($con,”SELECT * FROM property WHERE kat_prop like ‘%”.$cariproperti.”%’ OR nm_prop like ‘%”.$cariproperti.”%’ OR des_prop like ‘%”.$cariproperti.”%’ OR username like ‘%”.$cariproperti.”%’ OR wilayah_prop like ‘%”.$cariproperti.”%’ OR harga like ‘%”.$cariproperti.”%'”);
$jml = mysqli_num_rows($db);
?>
Hasil Pencarian :
itu bagian atas sendiri yang kepotong,
dan ada bagian tengah juga yang kepotong, ini codingnya :
}
elseif($wilayah ‘Semua Wilayah’)
{
$db = mysqli_query($con,”SELECT * FROM property WHERE kat_prop like ‘%”.$cariproperti.”%’ OR nm_prop like ‘%”.$cariproperti.”%’ OR des_prop like ‘%”.$cariproperti.”%’ OR username like ‘%”.$cariproperti.”%’ OR wilayah_prop like ‘%”.$cariproperti.”%’ OR harga like ‘%”.$cariproperti.”%'”);
$db2 = mysqli_query($con,”SELECT * FROM property WHERE wilayah_prop=’$wilayah'”);
$db3 = mysqli_query($con,”SELECT * FROM property WHERE wilayah_prop=’$wilayah’ AND kat_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND nm_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND des_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND username like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND wilayah_prop like ‘%”.$cariproperti.”%’ OR wilayah_prop=’$wilayah’ AND harga like ‘%”.$cariproperti.”%'”);
$jml = mysqli_num_rows($db);
$jml2 = mysqli_num_rows($db2);
$jml3 = mysqli_num_rows($db3);
?>
Hasil Pencarian :
mungkin kepotong karena kebaca coding oleh webnya mas,,, 😀
btw, maaf nubie nih,,, 🙂
Agus Prawoto Hadi says:
Tidak apa apa terpotong mas. Intinya di querynya ditambahkan limit.
Misal: untuk menampilkan 10 data di halaman pertama:
Untuk menampilkan 10 data di halaman kedua (data dimulai dari data ke 11:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+27Jika digabung dengan parameter url, misal: //localhost/tampil.php?page=2
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+28Ali mashum says:
Assalamu’alaikum mas, mohon bantuannya, terkait materi php query yah mas bagikan d jagowebdev[dot]com ttg menghitung jumlah tabel, mohon bantuannya mas,
simulasi peehitungan cepat pilkada
Mohon bantuannya mas agar outputnya bisa seperti itu.
Numanzen says:
Assalamu’alaikum mas, mohon bantuannya, saya ingin menghitung data yang sama ( dari id_masuk ) berdasarkan dengan tanggal , untuk tabelnya seperti ini
t_masuk
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+30t_keluar
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+31hasil yang di harapkan ( jika saat ini tglnya 30/03/2018 ) maka terhitung :
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+32Mohon bantuannya mas …
Ersha Aisyah says:
Assalamualaikum. wr.wb
Saya ingin menanyakan query seperti apa ya yang bisa digunakan untuk kasus saya ini. Mohon bantuannya.
kemudian saya ingin menjumlahkan bobot dari masing-masing kata yang sama dari user 1
misalkan dibuat tabel baru
kira-kira bagaimana ya? Terima kasih banyak sebelumnya.
Wassalamualaikum wr.wb.
Agus Prawoto Hadi says:
Waalaykumsalam…
Menurut saya tabelnya belum memenuhi kaidah normalisasi mas… seharusnya bentuk tabel nya seperti ini:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+35Sehingga untuk mencari nilai tertinggi dari siswa A, querynya adalah:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+36Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+37Namun jika tidak memungkinkan, maka untuk mencari nilai tertinggi akan ribet, bisa dicoba:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+38Hasil:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+39Namun perlu lagi mencari nilai tertinggi ada dibakat apa…
hani says:
tabel anggota
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+40tabel bayar angsuran
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+41mas minta bantuannya dong bagaimana mencari anggota yang belum bayar pada bulan mei, terima kasih
hani says:
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+42
Minta pencerahannya bang, bagaimana mengetahui saldo akhir dari tabel diatas,
saldo akhir diperoleh dari total dana masuk dikurangi total dana keluar… mohon bantuannya
Michael says:
tb_absen
+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+43+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+44+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+45Tolong pencerahannya Mas Agus, gimana caranya agar pada kolom sanksi disiplin terisi sanksi yang berlaku jika karyawan telah absen melebihi batas ketentuan dari sanksi yang ditetapkan, tapi jika karyawannya hadir terus atau belum melebihi batas ketentuan sanksi, kolomnya tetap kosong ?
Untuk tampilan outputnya saya pake buat seperti ini :
$sql_kehadiran = mysqli_query ($koneksi, "SELECT nama_karyawan, count(if(status_hadir = 'Hadir', status_hadir, NULL)) AS Hadir, count(if(status_hadir = 'Sakit', status_hadir, NULL)) AS Sakit, count(if(status_hadir = 'Izin', status_hadir, NULL)) AS Izin, count(if(status_hadir = 'Absen', status_hadir, NULL)) AS Absen, id_absen FROM tb_absen GROUP BY nama_karyawan") or die (mysqli_error($koneksi));
while($data_kehadiran = mysqli_fetch_array($sql_kehadiran));
Untuk outputnya mmg sdh muncul seperti yang diharapkan, hanya tinggal pemanggilan sanksinya mas...
+1 lagi mas, kira2 gmana caranya agar nilai "0" yang ditampilkan diganti dengan "-" atau dihilangkan, tanpa mengganggu fungsinya.. soalnya tabelnya kelihatan jadi ramai sekali..
Mohon bantuannya Mas. Terima Kasih.
AMSAR MADEING says:
Ass….
Maaf sebelumnya pak…mau brtanya ini ttg sql mungkin bisa membantu…
ada 2 tabel yaitu tabel pemilih dan relawan, setiap relawan memiliki beberapa pemilih yang menempati alamat dan no. tps yg sama dan beda…bgmn pak memunculkna hasil dari jumlah pemilih setiap tps, alamat serta nama relawannya masing2…
diucapkan trima kasih bnyk apa bila bisa membantu.
TABEL PEMILIH
————————-+———————————+————-+———————-
nama_pemilih | alamat_pemilih | no_tps | nik_relawan
————————-+———————————+————-+———————-
IRMA | BARRU | 01 | 7311001
ARMAN | BARRU | 01 | 7311001
DARWIS | MAKASSAR | 01 | 7311002
BURHANUDDIN | BARRU | 02 | 7311003
————————-+———————————+————-+———————-
TABEL RELAWAN
———————+—————————
nik_relawan | nama_relawan
———————+—————————
7311001 | AMSAR MADEING
7311002 | MUH. RAFIQ
7311003 | SUTRISNO
———————+—————————
HASIL TAMPILAN YANG DI INGINKAN
————————+————-+—————————–+———-
alamat_pemilih | no_tps | nama_relawan | total
————————+————-+—————————–+———-
BARRU | 01 | AMSAR MADEING | 2
BARRU | 02 | AMSAR MADEING | 1
MAKASSAR | 01 | MUH. RAFIQ | 1
————————+————-+—————————–+———-
Rinaldi Pratama Putra says:
mas, saya ingin menghitung semua jumlah transaksi barang berdasarkan id, dari tabel transaksi barang masuk dan juga transaksi barang keluar. Caranya gimana ya mas? yang di atas soalnya masih bingung, makasih mas sebelumnya.
ini tabel transaksi barang masuk :
+—-+————+————+————-+
| id | tgl | id_petugas | id_supplier |
+—-+————+————+————-+
| 1 | 2018-05-03 | 1 | 2 |
| 2 | 2018-05-03 | 2 | 1 |
| 3 | 2018-05-04 | 2 | 1 |
| 4 | 2018-05-05 | 2 | 3 |
| 5 | 2018-05-05 | 2 | 5 |
| 6 | 2018-05-06 | 1 | 3 |
| 7 | 2018-05-23 | 3 | 1 |
| 8 | 2018-05-24 | 1 | 5 |
| 9 | 2018-05-31 | 1 | 1 |
| 10 | 2018-06-05 | 0 | 1 |
+—-+————+————+————-+
ini tabel transaksi barang keluar :
+—-+————+————+————–+
| id | tgl | id_petugas | id_pelanggan |
+—-+————+————+————–+
| 1 | 2018-05-05 | 2 | 1 |
| 2 | 2018-05-05 | 2 | 1 |
+—-+————+————+————–+
ridwan says:
terimas kasih mas agus sarannya, saya sudah menggabungkan tabelnya mas dengan query berikut
$sw = “SW”;
$today = $sw.$row_tglrekrut[‘tgl’]; //untuk mengambil tahun, tanggal dan bulan Hari INI
//cari id terakhir ditanggal hari ini
$query1 = “(select max(nik) as maxnik, ‘0’ as kk from karyawan kk where kk.nik like ‘$today%’) union (select max(nik) as maxnik, ‘0’ as ko from karyawan_out ko where ko.nik like ‘$today%’)”;
$hasil = mysql_query($query1);
$data = mysql_fetch_array($hasil);
$idMax = $data[‘maxnik’];
//setelah membaca id terakhir, lanjut mencari nomor urut id dari id terakhir
$NoUrut = (int) substr($idMax, 10, 4);
$NoUrut++; //nomor urut +1
//setelah ketemu id terakhir lanjut membuat id baru dengan format sbb:
$NewID = $today .sprintf(‘%04s’, $NoUrut);
tapi masih kurang efektif mas, misal tgl 1 desember 2018,
1 orang ada di tabel karyawan aktif dengan id 181210001
2 orang ada di karyawan out dengan id 181210002 dan 181210003,
kalo kita mengeluarkan 1 orang di karyawan aktif, pasti di jml karyawan aktif jadi “0” dan jml di karywan out jadi “3”,,
di tangal yang sama 1 desember 2018 sesudah mengeluarkan 1 0rang tersebut, saya memasukan orang di karyawan aktif, orang trsebut sudah masuk tapi nomor id/niknya malah kembali ke 001, seharusnya kan berlanjut menjadi 004 atau 181210004
bagaimana solusinya mas?
terimakasih.
Edwin Tri Hadtanto says:
permaslahan yg sya hadapi seperti ini mas
querry : SELECT
td.nidn,
td.nm_dosen,
td.fak,
td.`status`,
sum(case when tn.id_angket = 1 then tn.nilai else 0 end) as nilai_1,
sum(case when tn.id_angket = 2 then tn.nilai else 0 end) as nilai_2,
sum(case when tn.id_angket = 3 then tn.nilai else 0 end) as nilai_3
FROM
tb_dosen td
LEFT JOIN tb_nilai tn ON tn.nidn_calon = td.nidn
WHERE
td.STATUS = ‘Calonx’
GROUP BY tn.nidn_calon
hasilx :
nidn | nm_dosen | fak | status | nilai_1 |nilai_2 |nilai_3
—————————————————————————————————————
1234 | Edwin | Teknik | Calonx | 5 | 3 | 1
————————————————————————————————————–
52131649 | Arief | fakultas teknik | Calonx | 9 | 10 | 11
Yg mw sya tanyakan, bagaiman crax mendapatkan nilai max dan min mas..
sya mencoba pakek
querry : SELECT
td.nidn,
td.nm_dosen,
td.fak,
td.`status`,
max(sum(case when tn.id_angket = 1 then tn.nilai else 0 end)) as nilai_1,
max(sum(case when tn.id_angket = 2 then tn.nilai else 0 end)) as nilai_2,
max(sum(case when tn.id_angket = 3 then tn.nilai else 0 end)) as nilai_3
FROM
tb_dosen td
LEFT JOIN tb_nilai tn ON tn.nidn_calon = td.nidn
WHERE
td.STATUS = ‘Calonx’
GROUP BY tn.nidn_calon
masih belum dapet jawabanx mas.. mohon bantuannx njeh
terima kasih
rangga says:
mas agus minta bantuannya saya punya data misalkan seperti ini
jidno tanggal week package
20477358 2019-04-10 15:07:23 15 Complete
20474152 2019-04-10 15:08:05 15 Complete
20474155 2019-04-10 15:08:42 15 Complete
20467377 2019-04-10 15:09:17 15 Complete
20477189 2019-04-15 10:05:05 16 Complete
20465627 2019-04-15 10:06:15 16 Complete
20471042 2019-04-15 10:35:03 16 incomplete
20468740 2019-04-15 11:28:50 16 Complete
20469017 2019-04-15 11:30:09 16 Complete
20423055 2019-04-22 09:23:07 17 Complete
20423056 2019-04-22 09:23:33 17 Complete
20478060 2019-04-22 10:54:19 17 Complete
20478496 2019-04-22 11:05:14 17 Complete
20469487 2019-04-22 11:07:22 17 Complete
saya menggunakan query seperti ini masih tidak muncul apa yang di maksud
SELECT week, COUNT(
CASE WHEN package = ‘Complete’
THEN 1
ELSE Null
END ) AS jml_complete, COUNT(
CASE WHEN package = ‘incomplete’
THEN 1
ELSE 0
END ) AS jml_incomplete
FROM m_data WHERE work_center LIKE ‘%machining%’
saya inginnya hasilnya seperti ini
week complete incomplete
15 4 0
16 4 1
17 4 1
mohon bisa di bantu mas, terima kasih
amin says:
mas mau tanya, saya ada 2 tabel yang datanya ingin saya tampilkan tabel 1 yaitu jatah_cuti dan tabel 2 cuti, untuk tabel jatah_cuti mempunyai record dan field sebagai berikut:
id id_jenis nip kuota
—— ——– ——- ——–
2 1 2017139 12
3 2 2017139 33
4 1 2017126 12
untuk tabel cuti mempunyai record dan field sbb:
id nip id_jenis tgl_mulai tgl_akhir total keperluan
—— ——- ——– ———- ———- —— ——————–
1 2017139 1 2019-10-15 2019-10-18 3 KEPERLUAN KELUARGA
3 2017139 1 2019-10-20 2019-10-22 2 LIBURAN
4 2017139 1 2019-10-24 2019-10-25 1 SAKIT
5 2017139 2 2019-11-06 2019-11-08 2 KEPERLUAN KELUARGA
6 2017126 1 2019-11-11 2019-11-12 1 KEPERLUAN KELUARGA
dari kedua tabel tersebut yang diambil cuma field id_jenis, kouta dan total, untuk id_jenis dan kuota diambil berdasarkan nip, sedangkan untuk total nanti dijumlahkan berdasarkan nip dan id_jenis.
contoh dari nip 2017139,sehingga mendapatkan tampilan sebagai berikut:
id_jenis kuota total sisa
———- ——– ——- ——–
1 12 6 6
2 33 2 31
dari data pada kolom total diatas jika dilihat dari tabel cuti yang ber-nip 2017139 telah mengambil 6 kali cuti untuk id_jenis 1 dan 2 kali cuti untuk id_jenis 2.
mohon petunjuk untuk sintax atau kodingannya, terima kasih mas
zulfikar says:
Pagi Mas, mohon pencerahannya saya mau menampilkan stok awal yang keluar nilainya cuma 1 diatas saja, querynya bagaimana iya?
select
a.id_barang,
a.kode_barang,
a.nama_barang,
a.stok as Stok_awal,
status,
tgl,
jumlah,
a.stok+saldo as saldo_akhir
from barang a
join (
select *, @saldo := @saldo+jumlah as saldo
from (
select
kode_barang,
‘Masuk’ status,
tgl_masuk as tgl,
jumlah
from barang_masuk
where kode_barang = ‘AR-ACP-003’
union all
select
kode_barang,
‘Keluar’ status,
tgl_keluar as tgl,
-jumlah
from barang_keluar
where kode_barang = ‘AR-ACP-003’
) tx
join ( select @saldo:=0 ) sx on 1=1
order by tgl
) mx on a.kode_barang = mx.kode_barang
where tgl BETWEEN ‘2019-12-01’ AND ‘2019-12-30’
ORDER BY tgl
id_barang kode_barang nama_barang stok_awal status tgl jumlah saldo_akhir
2 AR-ACP-003 ACP 1220 X 4880 182 Keluar 12/13/2019 -1 169
2 AR-ACP-003 ACP 1220 X 4880 – Keluar 12/10/2019 -9 170
2 AR-ACP-003 ACP 1220 X 4880 – Keluar 12/9/2019 -3 179
Aris Yudianto says:
tolong di bantu gan
query(“SELECT count(buku) as lokal from tb_pegawai”);
while ($data= $sql->fetch_assoc()) {
ini line 49 —> $lokal=$data[‘buku’];
}
?>
query(“SELECT count(sumber) as putra from tb_pegawai where status=’Gramedia'”);
ini line 55 while ($data= $sql->fetch_assoc()) {
$putra=$data[‘Gramedia’];
}
?>
query(“SELECT count(nip) as putri from tb_pegawai where status=’Honorer'”);
while ($data= $sql->fetch_assoc()) {
$putri=$data[‘putri’];
}
?>
query(“SELECT count(id_pengguna) as boyong from tb_pengguna”);
while ($data= $sql->fetch_assoc()) {
$boyong=$data[‘boyong’];
}
?>
Jumlah Pegawai
Selengkapnya
Status Pegawai
Status Honorer
hasilnya error
Notice: Undefined index: buku in C:\xampp\htdocs\stok\home\admin.php on line 49
Fatal error: Uncaught Error: Call to a member function fetch_assoc() on bool in C:\xampp\htdocs\stok\home\admin.php:55 Stack trace: #0 C:\xampp\htdocs\stok\index.php(270): include() #1 {main} thrown in C:\xampp\htdocs\stok\home\admin.php on line 55