Cara menggunakan mysql calculate row size

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 penjualan

Hasil 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_pelanggan

Maka 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_pelanggan

Hasil:

+--------------+---------+-----------+----------+-----------+----------+ | 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 = 2014

Jika 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:

$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());

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 | +-----------+----------+-----------+----------+0

Demikian, 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 | +-----------+----------+-----------+----------+1

SQL nya:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+2

Pada 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 | +-----------+----------+-----------+----------+3

Selain itu jika ID nya sudah diketahui, dapat menggunakan query berikut:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+4

Menurut 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:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+5+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+6

Bisa menggunakan query berikut:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+7

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+8

Kita 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 | +-----------+----------+-----------+----------+9

Hasil 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_pelanggan0

Selanjutnya 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_pelanggan1

Hasil:

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_pelanggan2

Semoga 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

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_pelanggan3

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_pelanggan4

tabel 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_pelanggan5

app_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_pelanggan6

dan 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_pelanggan7

kecamatan 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:

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_pelanggan8

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_pelanggan9

hanif says:

mas mohon dibantu cara membuat querynya…
bingung cara menampilkan query untuk data bulan sebelummnya..

+--------------+-----------+----------+-----------+----------+ | 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 | +--------------+-----------+----------+-----------+----------+0

SAYA INGIN MANMPIKAN DATA SEPERTI DI BWAH INI
MISAL BULAN LALU JANURI, BULAN INI FEBRUARI

+--------------+-----------+----------+-----------+----------+ | 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 | +--------------+-----------+----------+-----------+----------+1

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 | +--------------+-----------+----------+-----------+----------+2

select 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;

+--------------+-----------+----------+-----------+----------+ | 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 | +--------------+-----------+----------+-----------+----------+3

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

+--------------+-----------+----------+-----------+----------+ | 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 | +--------------+-----------+----------+-----------+----------+4

Ryan says:

mas saya mau bertanya , cara mngitung count berdasarkan tanggal dengan berdasarkan 3 tabel gimana ya mas,
berikut bentuk tabelnya 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 | +--------------+-----------+----------+-----------+----------+5

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 | +--------------+-----------+----------+-----------+----------+6

Mohon 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 | +--------------+-----------+----------+-----------+----------+7

Hasil:

+--------------+-----------+----------+-----------+----------+ | 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 | +--------------+-----------+----------+-----------+----------+8

Demikian 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 | +--------------+-----------+----------+-----------+----------+9

tanya 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

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_pelanggan0

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_pelanggan1

nb :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

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_pelanggan2

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 :

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_pelanggan3

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

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_pelanggan4

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

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_pelanggan5

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_pelanggan6

jadi saya tau jumlah absensi per siswa kira2 seperti ini
berdasarkan kelas yg ia ikuti,

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_pelanggan7

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:

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_pelanggan8

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_pelanggan9

el says:

mas, saya ingin bertanya
saya punya tabel karyawan, absen, dan golongan.
pada tabel karyawan:

+--------------+---------+-----------+----------+-----------+----------+ | 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 | +--------------+---------+-----------+----------+-----------+----------+0

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 | +--------------+---------+-----------+----------+-----------+----------+1

tabel 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 | +--------------+---------+-----------+----------+-----------+----------+2

pertama 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

+--------------+---------+-----------+----------+-----------+----------+ | 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 | +--------------+---------+-----------+----------+-----------+----------+3

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 | +--------------+---------+-----------+----------+-----------+----------+5

agusph 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 | +--------------+---------+-----------+----------+-----------+----------+6

Hasil:

+--------------+---------+-----------+----------+-----------+----------+ | 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 | +--------------+---------+-----------+----------+-----------+----------+7

Itu 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

+--------------+---------+-----------+----------+-----------+----------+ | 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 | +--------------+---------+-----------+----------+-----------+----------+8

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 | +--------------+---------+-----------+----------+-----------+----------+9

Mohon Bantuanya ya mas…
terima kasih banyak

adit says:

mas minta tolong bantuanya ya.
*tbl barang_masuk

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20140

*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 #

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20143

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

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20144

Hasilnya:

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20145

Selanjutnya hitung jumlah barang masuk:

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20146

Hasil:

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20147

Agus Prawoto Hadi says:

Coba query ini mas:

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20148

Hasil

SELECT COUNT(cs) AS jml_order FROM `order` WHERE cs="anton" AND tahun = 20149

agusph 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 ) ) 0

Hasilnya:

$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 ) ) 1

Jelas 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

$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 ) ) 2

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 ) ) 3

Kedua: 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 ) ) 4

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 ) ) 5

Hygen says:

selamat pagi mas,

mohon bantuanya :
Saya punya 4 buah tabel

$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 ) ) 6

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 ) ) 7

Mencari 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 ) ) 8

Hasilnya 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 ) ) 9

Hasil:

$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()); 0

untuk 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()); 1

boy 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

$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()); 3$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()); 4$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()); 5

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)

$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()); 6

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()); 7

Agus 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()); 8

Hasil:

$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()); 9

Selanjutnya kita hitung menggunakan COUNT

SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 0

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; 1

Metode 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:

SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 2

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; 3

Selanjutnya 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; 4

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; 5

orlin says:

mas minta tolong bantuanya ya.
saya ada tabel seperti ini mas
*tbl nama_perumahan

SELECT *, COUNT(cs) AS jml_order FROM `order` WHERE cs='Anton' AND tgl between '2015-06-01' and '2015-09-01' GROUP BY cs; 6

*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; 8

terima 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; 9

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+00

Pada 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 | +-----------+----------+-----------+----------+01

Nomor 2
Data yg ingin sya tampilkan adalah sbb :

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+02

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 | +-----------+----------+-----------+----------+03

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+04

slamet 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:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+05

yang ingin saya inginkan output melalui php seperti dibawah ini:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+06

satu 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 | +-----------+----------+-----------+----------+07

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+08

Pada 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 | +-----------+----------+-----------+----------+09

jani 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 | +-----------+----------+-----------+----------+11

Apa maksudnya seperti ini mas?

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+12

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+13

hygen 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 | +-----------+----------+-----------+----------+14

kalau menampilkan data seperti ini :

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+15

terima 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

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+16

Akan lebih memudahkan jika ada flagnya, misal:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+17

Tapi 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 | +-----------+----------+-----------+----------+19

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+20

Tapi 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 | +-----------+----------+-----------+----------+21

ketika 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 | +-----------+----------+-----------+----------+22

apakah 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;

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+24

harman says:

mas mo tanya lagi ni mas…. soalnya gagal terus..
saya punya tabel seperti ini…

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+25

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:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+26

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 | +-----------+----------+-----------+----------+27

Jika digabung dengan parameter url, misal: //localhost/tampil.php?page=2

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+28

Ali 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

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+29

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 | +-----------+----------+-----------+----------+30

t_keluar

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+31

hasil yang di harapkan ( jika saat ini tglnya 30/03/2018 ) maka terhitung :

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+32

Mohon bantuannya mas …

Ersha Aisyah says:

Assalamualaikum. wr.wb
Saya ingin menanyakan query seperti apa ya yang bisa digunakan untuk kasus saya ini. Mohon bantuannya.

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+33

kemudian saya ingin menjumlahkan bobot dari masing-masing kata yang sama dari user 1
misalkan dibuat tabel baru

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+34

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 | +-----------+----------+-----------+----------+35

Sehingga untuk mencari nilai tertinggi dari siswa A, querynya adalah:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+36

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+37

Namun jika tidak memungkinkan, maka untuk mencari nilai tertinggi akan ribet, bisa dicoba:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+38

Hasil:

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+39

Namun perlu lagi mencari nilai tertinggi ada dibakat apa…

hani says:

tabel anggota

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+40

tabel bayar angsuran

+-----------+----------+-----------+----------+ | item_2016 | jml_2016 | item_2015 | jml_2015 | +-----------+----------+-----------+----------+ | 8 | 16124000 | 5 | 9955000 | +-----------+----------+-----------+----------+41

mas 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 | +-----------+----------+-----------+----------+45

Tolong 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

Postingan terbaru

LIHAT SEMUA