Menghitung Field (Kolom) Pada Tabel MySQL Dengan Kondisi Tertentu Menggunakan COUNT IF

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:

Menggunakan Fungsi COUNT IF Pada MySQL - Diagram ERD

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 COUNT  yang otomatis akan menghitung jumlah row yang ada (row dengan nilai NULL tidak akan dihitung).

Kriteria untuk menghitung baris dapat dilakukan dengan 2 cara yaitu dengan:

  • COUNT(*)  yang akan menghitung semua row pada semua kolom.  Hasilnya akan diambil dari kolom yang memiliki jumlah row paling banyak.
  • COUNT(field_name)  yang akan menghitung row untuk kolom tertentu.

Sedangkan berdasarkan pengambilan datanya, fungsi COUNT dapat ditulis dengan atau tanpa klausa  DISTINCT, yaitu:

  • COUNT untuk menghitung semua row walaupun ada duplikasi data.
  • COUNT(DISTINCT ... ) 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 id_pelanggan  maka field tersebut dapat kita kelompokkan menggunakan klausa GROUP BY. 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 COUNT dengan tanda kurung buka tidak boleh ada spasi, misal: COUNT (  jika tidak, maka query akan berhenti dan muncul pesan error:  SQL Error (1630): FUNCTION tutorial_sum_if.COUNT does not exist. Check the 'Function Name Parsing and Resolution' section in the Reference Manual

Lebih Lanjut

Fungsi COUNT ini juga sering digunakan untuk membuat pivot table. Pembahasan mengenai cara membuat pivot table dibahas pada artikel:

Demikian tutorial mengenai penggunaan fungsi COUNT IF, 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.

741 Feedback dari pembaca

  • Mas, kalo kasusnya saya mau ngitung jumlahmahasiswa keseluruhan, jumlah mahasiswa dari jakarta dan jumlah mahasiswa dari luar jakarta berdasarkan angkatan gimana ya?

    Hasilnya jadi
    Angkatan| jumlah mahasiswa | dari Jakarta| Luar jakarta
    2014. | 120. | 50. | 70

  • maaf mas, apakan syntax tersebut bisa digunakan di php atau hanya bisa di gunakan di mysql nya saja ? mohon fast respon

      • Tolong Bantuannya Mas,,,, saya mau tanya ini kalo di pindah ke script php gimana ya mas?

        SELECT Jenis_Kelamin,
        COUNT(Nama) as Jumlah
        FROM tabelsiswa
        GROUP BY Jenis_Kelamin

        ini hasil dari fungsi agregat diatas mas
        Jenis_Kelamin || Jumlah
        Laki-Laki || 10
        Perempuan || 24

        • Coba pakai ini mas:

          $con 	= @mysqli_connect('localhost', 'root', 'pass', 'db_name');
          $sql 	= 'SELECT Jenis_Kelamin,
          					COUNT(Nama) as Jumlah
          			FROM tabelsiswa
          			GROUP BY Jenis_Kelamin';
          
          $query 	= mysqli_query($con, $sql);
          while ($row = mysqli_fetch_array($query))
          {
          	echo $row['Jenis_Kelamin'] . ' || ' . $row['Jumlah'];
          }
          
  • Gan, mau tanya..
    Bagaimana caranya mau menghitung jumlah data untuk kondisi seperti ini >>
    Misalnya saya punya tabel ORDER, dan tabel itu ada row ‘TAHUN’, ada row ‘CS’ dan row ‘DETAIL ORDER’
    Jadi saya mau hitung jumlah order yang terjadi pada tahun (Misalnya tahun 2014) tapi khusus untuk dari CS (misalnya ‘Anton’). Saya buat untuk PHP.

    Kodenya seperti ini saya buat >>

    $query = “SELECT source, COUNT(source) FROM inquiry GROUP BY source”;
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){
    echo “There are “. $row[‘COUNT(source)’] .” “. $row[‘source’] .” items.”;
    echo “”;
    }

    Saya bingung untuk taruh “where=’nama cs'”-nya dimana ??

    • Sebaiknya tidak menggunakan perintah mysql_query mas, karena perintah tersebut sudah deprecated dan akan di hilangkan di PHP versi 7, sebagai gantinya, coba biasakan menggunakan mysqli atau PDO.

      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 SUM(), COUNT(), AVG(), dll, maka mysql akan otomatis melakukan group, sehingga kita tidak perlu menuliskan perintah GROUP BY, 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….

      • Gini Gan, saya udah buat kode untuk mncari jumlah data dgn filter ‘NAMA CS’ tapi kalau saya juga mau ada filter TGL, bagaimana ya ?
        Ini kode saya >>

        $where = ”;
        if (isset($_GET[‘tgl_awal’]) && $_GET[‘tgl_akhir’]){
        $tgl_awal=$_GET[‘tgl_awal’];
        $tgl_akhir=$_GET[‘tgl_akhir’];
        $where .= “where date_format(datetime,’%Y-%m-%d’) between ‘$tgl_awal’ and ‘$tgl_akhir’ “;}

        $query = “SELECT source, COUNT(source)
        FROM inquiry WHERE agent=’fendy chang’ GROUP BY source”.$where;

        $result = mysql_query($query) or die(mysql_error());

        Untuk memasukkan kode hasil search TGL dimana ya ? Soalnya pas dijalankan kluar error bgini >> ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘date_format(datetime,’%Y-%m-%d’) between ‘2015-09-01’ and ‘2015-09-07” at line 2

        • 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 echo $query, 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:

          
          SELECT *, COUNT(cs) AS jml_order
          FROM `order` WHERE cs='Anton' AND tgl BETWEEN STR_TO_DATE('01/06/2015', '%d/%y/%m') and STR_TO_DATE('01/09/2015', '%d/%y/%m') GROUP BY cs;
          

          Demikian, semoga dapat membantu

  • Tabel:
    |nama|soal_1|soal_2|soal_3|soal_4|soal_5|nilai|
    ———————————————–
    Ari|1|0|1|1|0|3|
    Budi|1|1|0|0|0|2|
    Citra|1|1|1|1|1|5|
    Dodi|0|0|0|0|1|1|
    Ema|0|1|1|1|1|4|

    Saya ingin menjumlah kolom soal_1 tetapi hanya untuk 3 orang nilai tertinggi. Jadi yang dijumlahkan hanya Citra, Dodi, dan Ari. Mohon solusinya Mas.. Thanks..

    • Bisa pakai ini mas:

      SELECT SUM(soal_1) AS jml_soal_1 
      FROM tabel_nilai 
      ORDER BY soal_1 DESC 
      LIMIT 3
      

      Kita ubah urutannya terlebih dahulu dengan perintah ORDER BY soal_1 DESC kemudian ambil tiga teratas dengan perintah LIMIT 3 kemudian jumlahkan dengan perintah SUM(soal_1)

  • kasus = jika member transaksi sebanyak 5x maka akan mendapatkan diskon.. apakah bisa mengunakan query tersebut gan?

    • Saya belum terbayang tabel dan relasi antar tabelnya mas, mungkin bisa dicoba:

      SELECT IF(COUNT(id_pelanggan) >= 5, harga - (0.05 * harga), harga) as harga

      Jika id_pelanggan pernah membeli >= 5 kali maka akan dapat potongan harga 5%

  • pak saya mau tanya untuk menghitung jumlah 2 row terakhir pada tabel mysql sintaxnya gmn ya pak contoh nama tabel UAS berisi ID,NAMA,NILAI,TGL

    untuk menghitung 2 nilai terakhir pada tabel UAS

    • Untuk membuat seperti itu bisa menggunakan LIMIT mas, ambil dua baris terakhir, misal contoh tabel:

      +----+--------+-------+------------+
      | id | nama   | nilai | tanggal    |
      +----+--------+-------+------------+
      |  1 | Nama A |     7 | 2015-12-18 |
      |  2 | Nama B |     8 | 2015-12-18 |
      |  3 | Nama C |     9 | 2015-12-18 |
      |  4 | Nama D |     5 | 2015-12-18 |
      |  5 | Nama E |     6 | 2015-12-18 |
      +----+--------+-------+------------+
      

      SQL nya:

      SELECT SUM(nilai) AS nilai 
      FROM (
      	SELECT nilai FROM `uas` LIMIT 3, 2
      ) as nilai_uas
      

      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: LIMIT @limit, 2 maka agak merepotkan, jika ID nya auto increment, SQL nya dapat diubah menjadi:

      SELECT SUM(nilai) AS nilai 
      FROM (
      	SELECT nilai 
          FROM `uas` 
          ORDER BY ID 
          DESC 
          LIMIT 2
      ) as nilai_uas
      

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

      SELECT SUM(nilai) AS nilai 
      FROM (
      	SELECT nilai FROM `uas` WHERE ID = 4 OR ID = 5
      ) as nilai_uas
      

      Menurut saya sepertinya lebih reliable jika menggunakan ID sebagai penandanya, bukan rows, karena rows bisa berubah – ubah.
      Salam..

  • mlm mas…kasus yg bgini yg lagi saya cari.
    saya punya field tipe,harga_tipe.

    ada tabel transaksi ingin menghitung banyaknya dan total (qty*harga_tipe)
    ex:
    tgl_transaksi,tipe,harga_tipe,qty,total.
    17/12/2015,xx,100,10,1000
    18/12/2015,yy,200,2,400

    mohon bantuannya mas.tq

    • Bisa dicoba query berikut mas:

      SELECT COUNT(qty) AS "Jumlah Rows",
      		SUM(qty) AS "Jumlah QTY",
      		SUM(total) as "Jumlah Harga"
      FROM transaksi
      

      Hasil:

      +-------------+------------+--------------+
      | Jumlah Rows | Jumlah QTY | Jumlah Harga |
      +-------------+------------+--------------+
      |           2 |         12 |         1400 |
      +-------------+------------+--------------+

      Sedikit saran, untuk total sebaiknya didapatkan melalui query tidak disimpan sebagai kolom, tabel hanya untuk atribut dan nilai utama.
      Salam…

  • t_barang :

    Nama_brg | Harga |
    PENSIL   | 1500  |
    PULPEN   | 2000  |
    BUKU     | 2500  |
    

    hasil :

    +----+--------+-------+-------+------------+
    | id | barang | Harga | count |   tanggal  |
    +----+--------+-------+-------+------------+
    |  1 | PENSIL | 1500  |     7 | 2015-12-18 |
    |  2 | PULPEN | 2000  |     8 | 2015-12-18 |
    |  3 | BUKU   | 2500  |     9 | 2015-12-18 |
    +----+--------+-------+-------+------------+

    adanya tabel relasi dari t_barang dan t_penjualan, ingin tahu total penjualan perhari dari barang tersebut.

    mohon bantuannya juga mas…terimakasih.

    • Misal seperti ini mas:
      t_barang:

      +----+-------------+-------+
      | id | nama_barang | harga |
      +----+-------------+-------+
      |  1 | Pensil      |  1500 |
      |  2 | Pulpen      |  2000 |
      |  3 | Buku        |  2500 |
      +----+-------------+-------+
      
      t_penjualan:
      
      +----+------------+
      | id | tgl        |
      +----+------------+
      |  1 | 2015-12-18 |
      |  1 | 2015-12-18 |
      |  2 | 2015-12-18 |
      |  2 | 2015-12-18 |
      |  3 | 2015-12-18 |
      |  3 | 2015-12-18 |
      |  2 | 2015-12-18 |
      |  2 | 2015-12-18 |
      |  3 | 2015-12-18 |
      +----+------------+

      Bisa menggunakan query berikut:

      SELECT id, nama_barang, harga, jml, harga * jml as total, tgl FROM t_barang
      LEFT JOIN 
      (
          SELECT id, COUNT(id) as jml, tgl
          FROM t_penjualan
          GROUP BY id, tgl
      ) as t_penjualan
      USING (id)
      

      Hasil:

      +----+-------------+-------+------+-------+------------+
      | id | nama_barang | harga | jml  | total | tgl        |
      +----+-------------+-------+------+-------+------------+
      |  1 | Pensil      |  1500 |    2 |  3000 | 2015-12-18 |
      |  2 | Pulpen      |  2000 |    4 |  8000 | 2015-12-18 |
      |  3 | Buku        |  2500 |    3 |  7500 | 2015-12-18 |
      +----+-------------+-------+------+-------+------------+

      Kita perlu buat temporary tabel mas, untuk membuat resume dari tabel t_penjualan kemudian di joinkan ke tabel t_barang.
      Semoga membantu

      Salam...

  • Mau nanyak mas,
    Gmn cara hitung jumlah rawan banjir yang ada di beberapa kabupaten di tahun 2011 misalnya
    Mkasi sblmnya mas

    tb_rawan_banjir

    +-----------------+--------------+-------+
    | id_rawan_banjir | id_kecamatan | tahun |
    +-----------------+--------------+-------+
    |  1              | 1            |  2011 |
    |  2              | 2            |  2011 |
    |  3              | 3            |  2012 |
    |  4              | 3            |  2011 |
    |  5              | 1            |  2011 |
    +-----------------+--------------+-------+

    tb_kecamatan

    +---------------+--------------+----------------+
    | id_kecamatan  | id_kabupaten | nama_kecamatan |
    +---------------+--------------+----------------+
    |  1            | 1            | AA             |
    |  2            | 1            | AB             |
    |  3            | 2            | BA             |
    +---------------+--------------+----------------+

    tb_kabupaten

    +---------------+----------------+
    | id_kabupaten  | nama_kabupaten |
    +---------------+----------------+
    |  1            | A              |
    |  2            | B              |
    |  3            | C              |
    +---------------+----------------+
    • Coba pakai query ini mas:

      SELECT nama_kabupaten, nama_kecamatan, jml_rawan_banjir, tahun
      FROM tb_kabupaten
      LEFT JOIN tb_kecamatan USING (id_kabupaten) 
      LEFT JOIN
      (
      	SELECT id_kecamatan, COUNT(id_kecamatan) AS jml_rawan_banjir, tahun 
          FROM tb_rawan_banjir  
          GROUP BY id_kecamatan, tahun
      ) as tb_rawan_banjir USING(id_kecamatan)
      

      Hasil:

      +----------------+----------------+------------------+-------+
      | nama_kabupaten | nama_kecamatan | jml_rawan_banjir | tahun |
      +----------------+----------------+------------------+-------+
      | A              | AA             |                2 |  2011 |
      | A              | AB             |                1 |  2011 |
      | B              | BA             |                1 |  2011 |
      | B              | BA             |                1 |  2012 |
      | C              | NULL           |             NULL |  NULL |
      +----------------+----------------+------------------+-------+

      Intinya sama seperti pertanyaan sebelumnya, untuk tabel yang akan kita lakukan fungsi agregat, kita buat tabel temporarynya terlebih dahulu, dalam hal ini tb_rawan_banjir, setelah itu tabel yang lain tinggal di joinkan saja.
      Semoga dapat membantu

      Salam

  • Permisi mas, saya mau nanya
    Saya kan mau gabungin 3 tabel, yaitu tb_sungai, tb_bendungan, dan tb_das.
    Didalam tb_sungai itu ada inner join dengan tb_kabupaten.
    Saya menggunakan contoh query yang mas kasih diatas, tapi kabupatennya malah ambiguous, saya ngga ngerti gimana naruh id_kabupaten yg bener itu dimana.

    SELECT id_das, id_sungai, nama_das, luas_das, id_sungai, id_kabupaten, nama_sungai,
    id_jenis_sungai, jenis_sungai, id_bendungan, nama_bendungan, id_rawan_banjir, nama_rawan,
    jumlah_rawan
    FROM tb_sungai
    LEFT JOIN tb_das USING (id_sungai)
    LEFT JOIN tb_bendungan USING (id_sungai)
    LEFT JOIN tb_jenissungai USING (id_jenis_sungai)
    LEFT JOIN tb_kabupaten USING (id_kabupaten)
    LEFT JOIN
    (
    SELECT id_rawan_banjir, COUNT(id_rawan_banjir) AS jumlah_rawan, id_sungai, nama_rawan
    FROM tb_rawan_banjir
    GROUP BY id_sungai
    )AS tb_rawan_banjir USING (id_sungai)

    Makasih mas

    • Begini sobat,
      Idealnya untuk melakukan perintah select, gunakan pertimbangan berikut:

      1. Sertakan nama tabel diikuti nama field, misal: SELECT tb_sungai.id_sungai, tb_kabupaten.id_kabupaten FROM tb_sungai LEFT JOIN tb_kabupaten, sehingga jika terdapat field yang sama di tabel berbeda, MySQL tahu suatu field tersebut milik tabel yang mana. Perintah tersebut dapat disingkat menjadi SELECT sg.id_sungai, kab.id_kabupaten FROM tb_sungai sg LEFT JOIN tb_kabupaten kab USING(id_kabupaten)
      2. Jika kita yakin tabel yang kita joinkan tidak ada field yang sama, kita bisa langsung menuliskan nama field nya

      Sehingga pada kasus diatas jika ada field yang sama (misal: id_kabupaten) di tabel yang kita gunakan untuk query, maka MySQL akan bingung (ambiguous) mau pakai field id_kabupaten di tabel yang mana, untuk itu gunakan prefix nama tabel di perintah SELECT

      Selanjutnya, untuk penempatan id_kabupaten tidak masalah ditaruh dimana asal querynya bener

      Selamat mencoba,
      Semoga membantu

      Salam

  • Izin bertanya mas, saya punya tugas membuat sosial media. jika saya mempunya record data seperti ini,
    +——–+————–+
    |id_user | id_teman |
    +——–+————–+
    | 1 | 2,3,4,5,6 |
    | 2 | 1,3,4,5,6 |
    dst

    bagaimana syntax/cara untuk menghitung jumlah teman pada masing-masing id_user?
    bagaimana juga syntax/cara untuk menghitung user yang berteman pada id_user tertentu
    trims.

    • Kalau murni menggunakan SQL tidak bisa mas, karena SQL hanya menghitung jumlah rows, jadi harus pakai bantuan bahasa pemrograman kain seperti PHP, bisa menggunakan explode untuk memecah koma menjadi array, kemudian hitung dengan fungsi count. Jika tabel sering di gunakan untuk menjalankan perintah SQL, sebaiknya struktur datanya diubah mas satu id_user untuk satu id_teman.

      Semoga membantu

      • sy memang pakai PHP mas, dan juga sudah menggunakan explode untuk memecahkan isi recordnya, nah setelah itu yang sy bingung, coding utk menghitung setelah di explode.
        pengennya sih memang satu id_user satu id_teman, namun karna ini tugas kampus, dan dosen minta begituan databasenya

        • Begitu ya mas, sebenarnya struktur datanya kurang ideal, coba pakai script ini mas, seharusnya bisa:

          $sql = 'SELECT * FROM teman';
          $stmt = $pdo->prepare($sql);
          $stmt->execute();
          while ($row = $stmt->fetch())
          {
          	echo 'id_user: ' . $row['id_user'] . ' jml_teman: ' . count( explode(',' , $row['id_teman']) ) . '
          '; }
  • Mas agus, numpang tanya.
    Gimana cara gabungkan beberapa table untuk hitung COUNT dalam satu ID, misalkan
    Tabelnya seperti ini:

    tbl_pegawai
    id	nama	angkatan	kota
    1	A	2014		Jakarta
    2	B	2014		Medan
    3	C	2015		Semarang
    4	D	2015		Solo
    5	E	2015		Madiun
    tbl_angkatan
    id	nama	angkatan	kota
    1	A	2015		Jakarta
    2	B	2015		Medan
    3	C	2015		Semarang
    4	D	2014		Solo
    5	E	2014		Madiun
    tbl_admin
    id	nama	angkatan	kota
    1	A	2014		Jakarta
    2	B	2015		Medan
    3	C	2015		Semarang
    4	D	2014		Solo
    5	E	2014		Madiun
    HASILNYA NANTI SEPERTI INI untuk angkatan 2014
    nama	tbl_pegawai	tbl_angkatan	tbl_admin
    A	1		0		1		
    B	1		0		0
    C	0		0		0
    D	0		1		1
    E	0		1		1
    

    Atas bantuannya saya ucapkan banyak terima kasih

    • Coba pakai query ini mas:

      SELECT tpeg.nama, IF(tpeg.angkatan = 2014, 1, 0) as tbl_pegawai,
      			IF(tang.angkatan = 2014, 1, 0) as tbl_angkatan,
      			IF(tadm.angkatan = 2014, 1, 0) as tbl_admin
      FROM tbl_pegawai tpeg
      LEFT JOIN tbl_angkatan tang USING(id)
      LEFT JOIN tbl_admin tadm USING(id)
      
  • Maaf mas, sudah saya coba masih gagal, kalau data rill nya seperti ini mas

    t_calling
    Inputer		tgl_surat	nama_nasabah
    Ali		2015-12-03	Burhan
    Budi		2015-12-03	Saipul
    Ali		2015-11-01	Teja
    Budi		2015-12-03	Agus
    
    t_visiting
    Inputer		tgl_surat	nama_nasabah
    Ali		2015-12-03	Burhan
    Budi		2015-12-03	Saipul
    Ali		2015-11-01	Teja
    Budi		2015-12-03	Agus
    
    t_closing
    Inputer		tgl_surat	nama_nasabah
    Ali		2015-12-03	Burhan
    Budi		2015-12-03	Saipul
    Ali		2015-11-01	Teja
    Budi		2015-12-03	Agus
    

    Select t_calling.inputer,COUNT(IF(t_calling.tgl_surat= ‘2015-12-03’, 1, NULL)) as jml_calling from t_calling GROUP BY t_calling.inputer
    Hasil :

    Inputer		jml_calling
    Ali     	1
    Budi		2
    

    Gabungin antara tabel t_calling, t_visiting dan t_closing yang masih bingung, di harapkan setelah penggabungan hasilnya
    Hasil :

    Inputer		jml_calling	jml_visiting	jml_closing
    Ali		1		1		1
    Budi		2		2		2
    
    • Kalau saya lihat, datanya ngga ada yang unik mas, sehingga jika digabungkan, rownya akan dobel2, dan karena fungsi COUNT 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 COUNT. Query penggabungannya:

      SELECT t_calling.*, "tc" jenis
      FROM t_calling
      	UNION ALL
      SELECT *, "tv" jenis
      FROM t_visiting
      	UNION ALL
      SELECT *, "tcl" jenis
      FROM t_closing

      Hasil penggabungan:

      +---------+------------+-------------+-------+
      | inputer | tgl_surat  | tgl_nasabah | jenis |
      +---------+------------+-------------+-------+
      | Ali     | 2015-12-03 | Burhan      | tc    |
      | Budi    | 2015-12-03 | Saipul      | tc    |
      | Ali     | 2015-11-01 | Teja        | tc    |
      | Budi    | 2015-12-03 | Agus        | tc    |
      | Ali     | 2015-12-03 | Burhan      | tv    |
      | Budi    | 2015-12-03 | Saipul      | tv    |
      | Ali     | 2015-11-01 | Teja        | tv    |
      | Budi    | 2015-12-03 | Agus        | tv    |
      | Ali     | 2015-12-03 | Burhan      | tcl   |
      | Budi    | 2015-12-03 | Saipul      | tcl   |
      | Ali     | 2015-11-01 | Teja        | tcl   |
      | Budi    | 2015-12-03 | Agus        | tcl   |
      +---------+------------+-------------+-------+
      

      Selanjutnya buat query COUNT nya:

      SELECT inputer,
      	COUNT(
              	CASE WHEN tgl_surat = '2015-12-03'
              		 AND jenis = "tc"
              	THEN 1
              	ELSE NULL
          		END
          ) as jml_calling,
      	COUNT(
              	CASE WHEN tgl_surat = '2015-12-03'
              		 AND jenis = "tv"
              	THEN 1
              	ELSE NULL
          		END
          ) as jml_calling,
      	COUNT(
              	CASE WHEN tgl_surat = '2015-12-03'
              		 AND jenis = "tcl"
              	THEN 1
              	ELSE NULL
          		END
          ) as jml_calling
      FROM (
          SELECT t_calling.*, "tc" jenis
          FROM t_calling
          UNION ALL
          SELECT *, "tv" jenis
          FROM t_visiting
          UNION ALL
          SELECT *, "tcl" jenis
      	FROM t_closing
      ) as join_table
      GROUP BY inputer

      Hasil:

      +---------+-------------+-------------+-------------+
      | inputer | jml_calling | jml_calling | jml_calling |
      +---------+-------------+-------------+-------------+
      | Ali     |           1 |           1 |           1 |
      | Budi    |           2 |           2 |           2 |
      +---------+-------------+-------------+-------------+
      

      Semoga membantu…
      Salam.

  • mas agus,
    untuk membuat program Atrian seperti di Bank menggunakan server & client program PHP , DB MySQL. kira2 apa yang harus di siapkan.

    terima kasih mas, atas masukkannya

    wassalam

    • Untuk aplikasi semacam itu saya rasa lebih cocok menggunakan aolikasi desktop ya mas, soalnya akan terhubung dengan beberapa device eksternal

  • tanya mas kalo saya ingin membuat rekap seperti ini gimana yah
    ada 2 tabel master dan transaksi..thx

    tabel master

     id_pegawai nama_pegawai golongan
      1	    a		  I
      2	    b		  II
      3	    c		  III
      4	    D		  IV	
    

    tabel transaksi

    id_transaksi  id_pegawai tanggal_transaksi  golongan
     1	        1	  2016-01-01	     I
     2		1	  2016-02-01	     I
     3		2	  2016-03-01	     II
     4		3	  2016-03-01	     III
     5		2	  2016-02-01	     II
     6		4	  2016-01-01	     IV
    

    hasil :

    golongan  januari  februari	maret	 jumlah
    I	  1	    1		0		2		
    II	  0	    1		1		2
    III	  0	    0		1		1
    IV	  1	    0		0		1	
    
    TOTAL	  2	    2		2		6
    
    • Coba pakai query ini mas:

      SELECT  golongan, 
      		COUNT(IF(MONTH(tanggal_transaksi) = 1, golongan, NULL)) AS Januari,
      		COUNT(IF(MONTH(tanggal_transaksi) = 2, golongan, NULL)) AS Februari,
      		COUNT(IF(MONTH(tanggal_transaksi) = 3, golongan, NULL)) AS Maret,
      		COUNT(golongan) AS jumlah
      FROM tabel_transaksi
      GROUP BY golongan
      UNION ALL
      SELECT  "TOTAL", 
      		COUNT(IF(MONTH(tanggal_transaksi) = 1, golongan, NULL)) AS Januari,
      		COUNT(IF(MONTH(tanggal_transaksi) = 2, golongan, NULL)) AS Februari,
      		COUNT(IF(MONTH(tanggal_transaksi) = 3, golongan, NULL)) AS Maret,
      		COUNT(golongan) AS TOTAL
      FROM tabel_transaksi
      

      Jika menggunakan PHP, query nya bisa dibuat menggunakan for loop sehingga tidak perlu menuliskan bulan dari Januari hingga Desember

  • saya coba di sql berhasil mas makasih banyak cuma saya coba di php ko hasilnya nol ya mas penulisanya gimana yah…thx
    saya lagi coba export ke html2pdf mas ini syntaknya….

    $data_pti = $db->database_fetch_array($db->database_prepare("SELECT  sub_golongan, 
    								...")->execute());
    
    try
    {
    	$html2pdf = new HTML2PDF('L','Legal','en', false, 'ISO-8859-15',array(5, 10, 5, 5));
    	// $html2pdf->setModeDebug();
    	$html2pdf->setDefaultFont('Arial');
    	$html2pdf->writeHTML($content, isset($_GET['vuehtml']));
    	$html2pdf->Output($filename);
    }
    catch(HTML2PDF_exception $e) { echo $e; }
    
    • Kemungkinan masalahnya di script object databasenya mas, coba jalankan query yang simpel dan print hasilnya print_r($data_pti), setelah itu jalankan query utama, dan print lagi, cek apakah datanya sudah muncul.

  • 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

    hasil rekap :
    Jenis	Januari	 Februari  Maret  April	 Jumlah	
    A	1	 2	   0	  0	 3 	
    B	2	 3	   0	  0	 5	
    C	1	 1	   3	  2	 6	 
    
    Total	4	 6	   3	  2	 14
    
    • Saya rasa, mungkin errornya di script PHP untuk menjalankan querynya mas, coba querynya dikurangi mas, misal bulannya Januari dan Februari saja. Untuk tabelya mending untuk tabel transaksi digabung menjadi satu mas, ditambah tabel transaksi_ref untuk referensi jenis transaksi, jadi ada tiga tabel:

      master
      ———
      id_master
      nama
      jenis
      stok

      transaksi
      ———
      id_transaksi
      id_master
      tanggal_transaksi
      id_jenis
      jumlah

      transaksi_ref
      —————-
      id_jenis
      nama_transaksi

  • malem mas agus saya sudah jadikan satu tabel transaksi sesuai yang mas sarankan….penomoran otomatis saya menggunakan maxNomor berdasarkan jenis…trus dan skr gimana mas yah menerapkan query yang mas kasih ke dalam script php menggunakan loop…agar menghasilka laporan/rekap seperti ini…masih bingung mas maklum nubie mohon arahan dan bimbinganya…hiks

    hasil rekap:

    Jenis	Januari	 Februari  Maret  April	 Jumlah	
    A	1	 2	   0	  0	 3 	
    B	2	 3	   0	  0	 5	
    C	1	 1	   3	  2	 6	 
    
    Total	4	 6	   3	  2	 14
    
  • 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?

    _______________________________________________________________________________________________
    No	Program Studi	 |                 Pendaftaran	     |         Penerimaan
    _________________________| Pendaftan | Laki-Laki | Perempuan | Diterima | Laki-Laki | Perempuan
    1	Manajemen	 |	     |		 |	     |          |           |
    2	Akuntansi	 |	     |		 |	     |	        |           |
    3	Ekonomi Islam	 |           |		 |	     |		|	    |
    4	Ilmu Politik     |           |           |           |          |           |
    

    tabel masternya seperti ini

     id_daftar nama_pegawai   th_akademik jenis_kelamin  app_registrasi  pilihan_prodi
      11        edgar                         2                4             103                   
      12	    Yuni	      1           1                4             101
      13	    budi	      1           2                4             101
      14	    cintya	      1           1                4             102
      15	    Dedi	      1		  2                2             103
      16	    eko	              1		  2                1             102
    

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

    • Coba pakai query ini mbak:

      SELECT pilihan_prodi,
      	COUNT(pilihan_prodi) as daftar,
      	COUNT(IF(jenis_kelamin=1,jenis_kelamin,NULL)) as daftar_lk,
              COUNT(IF(jenis_kelamin=2,jenis_kelamin,NULL)) as daftar_pr,
              COUNT(IF(app_registrasi=4,app_registrasi,NULL)) as diterima,
              COUNT(
              	CASE WHEN app_registrasi=4 AND jenis_kelamin=1 
                      THEN app_registrasi
                      ELSE NULL
                      END        
                    ) as diterima_lk,
             	 COUNT(
              	CASE WHEN app_registrasi=4 AND jenis_kelamin=2 
                      THEN app_registrasi
                      ELSE NULL
                      END        
                    ) as diterima_pr
      FROM `penerimaan`
      GROUP BY pilihan_prodi
      

      Hasilnya:

      +---------------+--------+-----------+-----------+----------+-------------+-------------+
      | pilihan_prodi | daftar | daftar_lk | daftar_pr | diterima | diterima_lk | diterima_pr |
      +---------------+--------+-----------+-----------+----------+-------------+-------------+
      | 101           |      2 |         1 |         1 |        2 |           1 |           1 |
      | 102           |      2 |         1 |         1 |        1 |           1 |           0 |
      | 103           |      2 |         0 |         2 |        1 |           0 |           1 |
      +---------------+--------+-----------+-----------+----------+-------------+-------------+
      

      Jika menggunakan php, querynya bisa disimpan dalam variabel, misal $sql = ‘SELECT pilihan_prodi, COUNT…. dst’; Querynya menjadi: $dtpendaftar=mysql_query($sql);

      Semoga dapat membantu

  • gtanya mas, klo mau hitung jumlah nilai masing2 tahun..

    + - - - - + - - - - +
    |         |         |
    |  TAHUN  |  NILAI  |
    |         |         |
    + - - - - + - - - - +
    |         |         |  
    |  2013   |   120   |
    |  2013   |   100   |
    |  2013   |   90    |
    |  2014   |   100   |
    |  2014   |   110   |
    |  2014   |   120   |
    |  2015   |   80    |
    |  2013   |   120   |
    |  2013   |   90    |
    |         |         |
    |   dst.  |   dst.  |
    |         |         |
    + - - - - + - - - - +
    
  • mas agus,

    bagaimana script php menghitung 10 pendaftar pertama misal data sudah ada 100. pada tabel sudah ada id_daftar,id_pengunjung,kelas,tglpendaftaran.

    asumsi id daftar dan tgl pendaftaran ada dan tidak urut. Mohon pencerahan ya mas.

    terima kasih.

  • Mas saya punya tabel kira kira kayak gini

    Kelurahan         diare
               Penderita.meninggal
    Bukit duri        
    Bukit duri
    Bukit duri
    Bukit duri
    

    Saya ingin tau jumlah pasien yang keluarahannya di bukit duri terus penyakitnya diare terus yang penderita berapa, yang meninggal berapa. Itu bagaimana yah mas, mohon bantuannya

    • Coba pakai query ini mas:

      SELECT kelurahan,
      		SUM(IF(kelurahan="Bukit duri", penderita, null)) as jml_penderita,
      		SUM(IF(kelurahan="Bukit duri", meninggal, null)) as jml_meninggal
      FROM nama_tabel
      GROUP BY kelurahan
      

      Mungkin sebaiknya kelurahan diganti kode mas, nanti ada tabel sendiri untuk nama kelurahannya, contoh diatas untuk menjumlah, untuk menghitung, fungis SUM bisa diganti COUNT

  • sorre mas,
    saya punya tabel seperti ini:

    id_testimoni | kritik | saran | testimoni | tanggal
    T0001 tes 2015-12-12
    T0002 null tes null 2016-01-01
    T0003 null null tes 2016-02-02
    T0004 null null tes 2016-03-03
    

    saya mau tau berapa jumlah kritik, saran dan testimoni mas berdasarkan tanggalnya.
    saya pakai sintax seperti ini tapi belum seperti yang diharapkan, mohon bantuannya mas,
    terimaksih sebelumnya

    SELECT MONTH(tanggal) AS bulan, YEAR(tanggal) AS tahun, COUNT(*) AS jumlah FROM testimoni_kritik_dan_saran where tanggal between ‘2015-01-01’ and ‘2016-12-12’ GROUP BY DATE_FORMAT(tanggal, ‘%Y%m’)

    • Coba pakai query ini mas:

      SELECT MONTH(tanggal) AS bulan, YEAR(tanggal) AS tahun, 
      	COUNT(IF(kritik != '', kritik, null)) as jml_kritik,
      	COUNT(IF(saran != '', saran, null)) AS jml_saran,
      	COUNT(IF(testimoni != '', testimoni, null)) AS jml_testimoni,
      	COUNT(*) AS jumlah 
      FROM testimoni 
      where tanggal between '2015-01-01' and '2016-12-12' 
      GROUP BY DATE_FORMAT(tanggal, '%Y%m')

      Hasil:

      +-------+-------+------------+-----------+---------------+--------+
      | bulan | tahun | jml_kritik | jml_saran | jml_testimoni | jumlah |
      +-------+-------+------------+-----------+---------------+--------+
      |    12 |  2015 |          1 |         0 |             0 |      1 |
      |     1 |  2016 |          0 |         1 |             0 |      1 |
      |     2 |  2016 |          0 |         0 |             2 |      2 |
      |     3 |  2016 |          0 |         0 |             1 |      1 |
      +-------+-------+------------+-----------+---------------+--------+

      Untuk meresume colom, coba gunakan fungsi agregat seperti SUM atau COUNT di tiap-tiap kolom di bagian SELECT mas

  • maaf mas numpang tanya, sebenarnya saya ingin buat tampilannya seperti ini mas :

    kecamatan: tebet
    ________________________________________________________________________________________________
    kelurahan/desa	 |         diare         |         campak        |         kolera
    _________________| penderita | meninggal | penderita | meninggal | penderita | meninggal	
    RW01 bukit duri  |	     |		 |	     |           |           |
    RW02 bukit duri  |	     |		 |	     |	         |           |
    RW03 bukit duri  |           |		 |	     |	         |           |
    RW04 bukit duri  |           |           |           |           |           |
    

    dan tabelnya seperti ini :

    id_pasien  nama_pasien   kecamatan   kelurahan  rw  penyakit  status
       1          alam           1           2       1     4        1                   
       2	      budi	     1           2       1     4        2
       3	      cati	     1           2       1     3        1
       4	      danang	     2           1       2     3        1
       5	      ela	     3		 3       3     2        2
       6	      fatur	     1		 2       4     3        2
    

    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

    • 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 rw, 
      		SUM(
          		CASE WHEN status = 1 AND penyakit = 3 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS diare_sakit,
      		SUM(
          		CASE WHEN status = 2 AND penyakit = 3 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS diare_meninggal,
      		SUM(
          		CASE WHEN status = 2 AND penyakit = 4 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS campak_sakit,
      		SUM(
          		CASE WHEN status = 2 AND penyakit = 4 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS campak_meninggal,
      		SUM(
          		CASE WHEN status = 2 AND penyakit = 2 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS dbd_sakit,
      		SUM(
          		CASE WHEN status = 2 AND penyakit = 2 
          		THEN rw 
          		ELSE NULL
          		END
          	) AS dbd_meninggal
      FROM penyakit
      WHERE kelurahan = 2 AND kecamatan = 1
      GROUP BY rw

      Hasilnya:

      +----+-------------+-----------------+--------------+------------------+-----------+---------------+
      | rw | diare_sakit | diare_meninggal | campak_sakit | campak_meninggal | dbd_sakit | dbd_meninggal |
      +----+-------------+-----------------+--------------+------------------+-----------+---------------+
      |  1 |           1 |            NULL |            1 |                1 |      NULL |          NULL |
      |  4 |        NULL |               4 |         NULL |             NULL |      NULL |          NULL |
      +----+-------------+-----------------+--------------+------------------+-----------+---------------+
  • tapi mas itu yang muncul cuman rw 1 sama 4 doangan, kalo saya mau munculin semua rw nya walaupun yang ke isi cuman rw 1 sama 4 dan sisanya itu memang tidak ada itu bagaimana mas? terimakasih mas sebelumnya

  • tapi kalo WHERE nya dihilangkan, pasien yang bukan di bukit duri bisa ikut keitung juga dong mas, kalo dia gak ikut ke itung bisa gak,tapi tetep di form itu menampilkan rw 1 sampai 4 yang ada di bukit duri

    • Kalau begitu jawaban saya yang pertama sudah benar mas, dari sampel data yang diberikan, di kelurahan bukit duri hanya ada RW 1 dan 4, coba disample dengan menambahkan RW 3, hasilnya seperti apa, disaya seperti ini:

      +----+-------------+-----------------+--------------+------------------+-----------+---------------+
      | rw | diare_sakit | diare_meninggal | campak_sakit | campak_meninggal | dbd_sakit | dbd_meninggal |
      +----+-------------+-----------------+--------------+------------------+-----------+---------------+
      |  1 |           1 |            NULL |            1 |                1 |      NULL |          NULL |
      |  3 |        NULL |            NULL |         NULL |             NULL |      NULL |          NULL |
      |  4 |        NULL |               4 |         NULL |             NULL |      NULL |          NULL |
      +----+-------------+-----------------+--------------+------------------+-----------+---------------+

      Oiya mas agar pembahasannya runtut, jika ada yang masih perlu didiskusikan terkait query ini, tolong di posting ke facebook jagoWebDev ya…

  • sore mas, numpang tanya, saya punya tabel seperti ini

    tbl_mhs tbl_matkul tbl_ambil
    id_mhs nama id_matkul matkul id id_mhs id_matkul
    1 a 1 fisika 1 1 1
    2 b 2 mtk 2 1 2
    3 c 3 biologi 3 2 2
    4 d 4 kimia 4 2 3

    saya ingin tampilannya itu kayak gini mas:

    nama matkul
    a fisika, mtk
    b mtk, biologi

    kalo seperti itu bisa gak yah mas?

    • Kalau seperti itu (fisika, mtk) tidak bisa mas, karena MySQL akan menampilkannya per row, untuk membuat seperti yang dimaksud, buat query per row dahulu kemudian digabungkan dengan php

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

    TABEL KATEGORI			
    IDKAT	KATEGORI		
    1		Biscuit		
    2		sirup		
    3		minyak		
    			
    			
    TABEL BARANG			
    IDKAT	IDBARANG	NAMA BARANG	HARGA
    1		11			TANGGO		10000
    1		12			POTATO		12000
    2		21			MELON		15000
    2		22			LEMON		15000
    3		31			BIMOLI		30000
    3		33			TROPICANA	50000
    			
    TABEL PENJUALAN				
    TGL			IDBARANG	JML		
    01/01/2016	11			10		
    01/01/2016	12			5		
    11/01/2016	11			2		
    10/02/2016	11			22		
    10/02/2016	12			12		
    01/01/2016	21			10		
    01/01/2016	22			5		
    11/01/2016	22			2		
    10/02/2016	21			22		
    10/02/2016	22			12		
    01/01/2016	31			10		
    01/01/2016	33			5		
    11/01/2016	33			2		
    10/02/2016	31			22		
    10/02/2016	33			12		
    

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

    			
    IDBARANG	JUMLAH_BARANG	JUMLAH_PENJUALAN_BULAN_LALU	JUMLAH_PENJUALAN_BULAN_INI	JUMLAH_PENJUALAN_BULAN_INI
    		                       TOTALHARGA	               TOTALHARGA	               TOTALHARGA
    11	            34	                  120000	                 220000	                           340000
    12	            17	                  50000	                         120000	                           170000
    21	            34	                  180000	                 330000	                           510000
    22	            17                    75000	                         180000	                           255000
    31	            34	                 360000	                         660000	                          1020000
    33	            17	                 150000	                         360000	                           510000
    
    • Coba pakai ini mas:

      SELECT IDBARANG, 
      		SUM(jml) AS JUMLAH_BARANG, 
      		SUM(IF (MONTH(tgl) = MONTH(CURDATE() - INTERVAL 1 MONTH), HARGA * JML, NULL) ) AS JUMLAH_PENJUALAN_BULAN_LALU,
      		SUM(IF (MONTH(tgl) = MONTH(CURDATE()), HARGA * JML, NULL) ) AS JUMLAH_PENJUALAN_BULAN_INI,
      		SUM(
                  	CASE 
                      WHEN  MONTH(tgl) = MONTH(CURDATE() - INTERVAL 1 MONTH)
                              OR MONTH(tgl) = MONTH(CURDATE())
                      THEN HARGA * JML
                      ELSE NULL
                      END
                  ) AS TOTAL
      FROM tabel_penjualan
      LEFT JOIN tabel_barang USING (IDBARANG)
      GROUP BY IDBARANG
  • Mas mohon bantuannya….
    Scenarionya seperti tiket pesawat atau kereta.
    Kursi yang tersedia untuk pesawat adalah 10 kursi berurutan, setelah terbeli semua, aplikasi akan menolak menambah kursi karena kapasitas kursi dalam database hanya 10 kursi..
    Jika salah satu penumpang membatalkan tiket, maka kursi yang tersedia kembali menjadi 9, dan kursi yang tersedia ada pada No ‘5’..
    Pertanyaannya adalah bagaimana query sebaiknya mas jika kapasitas kursinya adalah Auto_increment, bagaimana jika ada penumbang baru yang ingin membeli mendapatkan kursi no 5 dari database secara otomatis berhubung kursi no ‘5’ tersedia..
    Sekian dan terima kasih atas perhatiaanya mas….

    • Maaf mas, saya tidak begitu faham maksudnya, kalau auto increment biasanya untuk id mas, untuk edit dan delete, untuk quota kursi bisa di cek ke databasenya pakai count. Untuk nomor kursi bisa dibuat field sendiri dan jika ada yang mencancel pemesanan, nomor kursi 5 diberi flag kalau di cancel

  • Maaf mas mau tanya, saya punya 3 tabel:

    tabel barang
    +--------+-----------+-----------------+
    | kd_brg | nm_brg    | kategori        |
    +--------+-----------+-----------------+
    | B001   | HVS 200gr | ART PAPER       |
    | B002   | karton    | CONCORD         |
    | B003   | kuarto    | DUPLEX (COATED) |
    +--------+-----------+-----------------+
    
    tabel barang masuk
    +------------+--------+--------+---------+
    | tgl_msk    | kd_brg | kd_sup | jml_msk |
    +------------+--------+--------+---------+
    | 2016-03-02 | B001   | S002   | 2       |
    | 2016-03-17 | B001   | S001   | 4       |
    | 2016-03-18 | B003   | S001   | 5       |
    | 2016-03-23 | B002   | S002   | 3       |
    +------------+--------+--------+---------+
    
    tabel barang keluar
    +------------+--------+------------+
    | tgl_keluar | kd_brg | jml_keluar |
    +------------+--------+------------+
    | 2016-03-25 | B002   | 4          |
    | 2016-03-11 | B003   | 6          |
    | 2016-03-03 | B001   | 8          |
    | 2016-03-24 | B001   | 7          |
    +------------+--------+------------+
    -------------------------------------------------------------------------------------
    

    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;

    +--------+-----------+--------+------+
    | kd_brg | nm_brg    | keluar | msk  |
    +--------+-----------+--------+------+
    | B001   | HVS 200gr |     30 |   12 |
    | B002   | karton    |      4 |    3 |
    | B003   | kuarto    |      6 |    5 |
    +--------+-----------+--------+------+
    ------------------------------------------------------------------------------------------
    

    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

    +--------+-----------+--------+------+------+
    | kd_brg | nm_brg    | keluar | msk  |stok  |
    +--------+-----------+--------+------+------+
    | B001   | HVS 200gr |     15 |    6 |    9 |
    | B002   | karton    |      4 |    3 |    1 |
    | B003   | kuarto    |      6 |    5 |    1 |
    +--------+-----------+--------+------+------+
    • Seperti jawaban saya pada pertanyaan pertanyaan sebelumnya, untuk join tabel, relasinya harus one to one relationship mas, jika tidak maka dia akan menjoinkan sebanyak row yang ada di kedua tabel, sehingga walaupun di tabel mbarang cuman ada 1 kode barang tetapi di tabel brgkeluar dan brgmask ada lebih dari 1 row, maka MySQL akan menjoinkan dengan jumlah row terbanyak, dalam hal ini 2 row, (B001 ada 2 row) sehingga jumlahnya akan 2 kali lipat. untuk itu buat relasinya one to one, salah satunya:

      SELECT mbarang.kd_brg, mbarang.nm_brg, keluar, msk 
      		FROM mbarang 
      JOIN (
      		SELECT kd_brg, SUM(jml_keluar) as keluar
      		FROM brgkeluar
      		GROUP BY kd_brg
      	) as brgkeluar	USING (kd_brg)
      JOIN (
      		SELECT kd_brg, SUM(jml_msk) as msk
      		FROM brgmsk
      		GROUP BY kd_brg
      	) as brgmsk	USING (kd_brg)
      GROUP BY kd_brg
  • 1. cara buat relasinya one to one itu bagaimana ya mas saya masih blm paham.. di tabel itu saya menggunakan kode barang sebagai primary key nya…
    supaya tau tabel relasi nya itu one to one bagaimana jg ??
    maaf mas nanya nya kepanjangan

    2. mas saya coba untuk menambahkan stok dengan query ini kok salah ya mohon salah nya dimana

    select mbarang.kd_brg,mbarang.nm_brg,keluar,msk,stok from mbarang join (
    select kd_brg, sum(jml_keluar)as keluar from brgkeluar group by kd_brg) as brgke
    luar using (kd_brg) join(select kd_brg, sum(jml_msk)as msk from brgmsk group by
    kd_brg)as brgmsk using(kd_brg) join (select brgkeluar.kd_brg,brgmsk.kd_brg sum(jml_msk)-sum(jm
    l_keluar) as stok from brgmsk,brgkeluar group by kd_brg) as stok using(kd_brg)
    group by kd_brg;

    • 1. Untuk membuat one to one relationship ya di bayangkan mas ketika membuat querynya intinya jika “real” tabel nya hubungannya masih one to many atau many to many, maka harus dibuat temporary tabel sehingga hubungannya one-to-one, kapan kapan kalau sempat saya bahas secara detail mas.

      2. untuk menjumlahkan stok tidak perlu membuat query lagi karena tabel nya sudah ada (temporary) tabel, coba query ini mas:

      SELECT mbarang.kd_brg,mbarang.nm_brg,keluar,msk, msk-keluar AS stok 
      FROM mbarang 
      JOIN (
      		SELECT kd_brg, sum(jml_keluar) AS keluar
          	FROM brgkeluar 
          	GROUP BY kd_brg
      	) AS brgkeluar USING (kd_brg) 
      JOIN (
          	SELECT kd_brg, sum(jml_msk) AS msk 
          	FROM brgmsk 
          	GROUP BY kd_brg
      	) AS brgmsk USING (kd_brg) 
      GROUP BY kd_brg;

      Agar tidak terlalu memakan banyak tempat, jika masih ada yang ditanyakan tolong di posting ke halaman facebook JagoWebDev mas

  • mas saya mau bertanya , cara mngitung count berdasarkan tanggal dengan berdasarkan 3 tabel gimana ya mas,
    berikut bentuk tabelnya mas

    -tb_siswa
    | idsiswa | tanggal    | 
    +---------+------------+
    | S001    | 2016-03-29 |
    | S002    | 2016-03-29 |
    | S003    | 2016-03-30 |
    +---------+------------+
    
    -tb_guru
    | idguru | tanggal    | 
    +--------+------------+
    | G001   | 2016-03-30 |
    | G002   | 2016-03-30 |
    | G003   | 2016-03-30 |
    +--------+------------+
    
    -tb_umum
    | idsiswa | tanggal    | 
    +---------+------------+
    | U001    | 2016-03-29 |
    | U002    | 2016-03-31 |
    | U003    | 2016-03-31 |
    +---------+------------+
    

    Dan Hasilnya pengennya sperti ini mas :

    -hasil
    +------------+-----------+------+------+-------+
    | tanggal    | siswa     | guru | umum |total  |
    +------------+-----------+------+------+-------+
    | 2016-03-29 |     2     |   0  |   1  |   3   |
    | 2016-03-30 |     1     |   3  |   0  |   4   |
    | 2016-03-31 |     2     |   0  |   0  |   2   |
    +------------+-----------+------+------+-------+
    

    Mohon Pencerahannya mas, terima kasih banyak mas

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

      SELECT tanggal,
      COUNT(IF(id = "S", id, NULL)) as siswa,
      COUNT(IF(id = "G", id, NULL)) as guru,
      COUNT(IF(id = "U", id, NULL)) as umum,
      COUNT(id) as total
      FROM
      	(SELECT SUBSTRING(idsiswa,1,1) AS id, tanggal FROM tb_siswa
      		UNION ALL
      	SELECT SUBSTRING(idguru,1,1) AS id, tanggal FROM tb_guru
      		UNION ALL
      	SELECT SUBSTRING(idumum,1,1) AS id, tanggal FROM tb_umum
      	) AS tb_all
      GROUP BY tanggal

      Hasil:

      +------------+-------+------+------+-------+
      | tanggal    | siswa | guru | umum | total |
      +------------+-------+------+------+-------+
      | 2016-03-29 |     2 |    0 |    1 |     3 |
      | 2016-03-30 |     1 |    3 |    0 |     4 |
      | 2016-03-31 |     0 |    0 |    2 |     2 |
      +------------+-------+------+------+-------+

      Demikian mas, semoga dapat membantu

  • iya mas maaf saya kirim nya kemana mana hehe
    sudah tidak ada mas… trimakasih banyak mas.. nambah ilmu baru.. saya kira harus di buat tabel lagi soalnya untuk menghitung stok di ambil dr 2 tabel yaitu tabel masuk dan tabel keluar.. pantas hasilnya eror..
    trimakasih banyak mas..

  • terima kasihh atas jawabannya mas, tapi maaf mas sebenarnya id di tabel siswa, guru,dan umum tidak ada inisial S,G, dan U
    jadi sewaktu saya coba ke data yg saya punya saya tidak memiliki acuan untuk dijadikan pedoman, dan data di id siswa, guru , dan umum tersebut berbeda beda satu sama lain dan tidak tentu, begini mas datanya :

    -tb_siswa
    | idsiswa   | tanggal    | 
    +-----------+------------+
    | 138987    | 2016-03-29 |
    | 138988    | 2016-03-29 |
    | 138989    | 2016-03-30 |
    +-----------+------------+
    
    -tb_guru
    | idguru    | tanggal    | 
    +-----------+------------+
    | 19700618  | 2016-03-30 |
    | 19550511  | 2016-03-30 |
    | 19707788  | 2016-03-30 |
    +-----------+------------+
    
    -tb_umum
    | idsiswa | tanggal    | 
    +---------+------------+
    | 001     | 2016-03-29 |
    | 002     | 2016-03-31 |
    | 003     | 2016-03-31 |
    +---------+------------+
    

    Begitu mas, bagaimana kalo begitu ya mas? terima kasih mas, mohon pencerahannya

    • Iya mas, sebenarnya untuk amannya di temporary tabel, kita definisikan sendiri ID nya, misal S untuk siswa, G untuk guru, dan U untuk umum, sehingga querynya menjadi:

      SELECT tanggal,
      COUNT(IF(id = "S", id, NULL)) as siswa,
      COUNT(IF(id = "G", id, NULL)) as guru,
      COUNT(IF(id = "U", id, NULL)) as umum,
      COUNT(id) as total
      FROM
      	(SELECT "S" AS id, tanggal FROM tb_siswa
      		UNION ALL
      	SELECT "G" AS id, tanggal FROM tb_guru
      		UNION ALL
      	SELECT "U" AS id, tanggal FROM tb_umum
      	) AS tb_all
      GROUP BY tanggal
  • mas terima kasih banyak atas pencerahannya sudh saya cb terapin dan bisa,
    terima kasih mas

  • permisi mas, saya mau tanya
    saya kn punya tabel comment dan photo

    id_comment | id_photo | content
    1            1          bla bla
    2            1          bla
    3            3          bla bla bla
    
    id_photo  |  photo
    1            photo1.png      
    2            photo2.png      
    3            photo3.png      
    4            photo4.png       
    5            photo5.png      
    

    nah, saya pakai cara mas yang diatas cuman tampil 2 record aja, sedangkan saya mau yg tampil 5 record dengan jumlah komennya mas.
    saya kn mau ambil semua id photo dengan jumlah komennya
    kira2 query.nya gmn ya mas?

    • Mungkin tabel nya kebalik mas, coba dicek lagi querynya, yang jadi tabel acuan tabel foto, kemudian dijoinkan ke tabel comment

  • SELECT ft.id_photo as id_photo, ft.photo as photo, 
    		com.id_comment as id_comment, com.content as content, 
    		COUNT(IF(com.id_comment, com.id_photo, NULL)) as jumlah_comment 
    FROM sk_photo as ft 
    JOIN sk_comment as com ON ft.id_photo = com.id_photo 
    GROUP BY ft.id_photo
    

    seperti ini query saya mas, kira2 apa yg salah ya?

  • siang pak…
    mau tanya….saya punya 3 tabel…yaitu tabel bagian,karyawan dan gaji…untuk tabel bagian saya punya 10 record,karyawan dan gaji 35 record…saya ingin menampilkan beberapa kolom dari 3 tabel tersebut…tapi dengan nama bagian tidak duplikat…dengan kata lain view hanya 10 record…sesuia tabel bagian…bagaimana ya pak???

    ow iya pak untuk perintah nya saya ingin menambahkan count pada kolom untuk menghitung jumlah nama bagian yang terdapat pada tabel karyawan

    mohon pencerahannya

  • iya pak , terimakasih untuk penjelasannya ,, untuk menampilkan ini saya sudah berhasil untuk menggabungkan 3 tabel,,,

    SELECT 	M_BAGIAN.NAMA_BAGIAN,
    		M_KARYAWAN.NIK,
    		M_KARYAWAN.NAMA_KARYAWAN,
    		M_KARYAWAN.JENIS_KELAMIN,
    		M_GAJI.GAJI_POKOK,
    		M_GAJI.TUN_PERUMAHAN,
    		M_GAJI.TUN_INTENSIVE
    FROM (M_KARYAWAN INNER JOIN  M_GAJI ON M_KARYAWAN.NIK =  M_GAJI.NIK)
    INNER JOIN  M_BAGIAN ON M_KARYAWAN.KODE_BAGIAN = M_BAGIAN.KODE_BAGIAN
    ORDER BY NAMA_BAGIAN
    
    NAMA_BAGIAN	NIK	NAMA_KARYAWAN	JENIS_KELAMIN	GAJI_POKOK	TUN_PERUMAHAN	TUN_INTENSIVE
    Accounting	004	Moersid Zaenal	Laki-Laki	7000000		500000		0
    Accounting	002	Garry TisnantonoLaki-Laki	9000000		500000		0
    Accounting	032	Bandu Warsito	Laki-Laki	19700000	1500000		100000
    Design		016	Wagimin		Laki-Laki	3700000		500000		100000
    Design		028	FX. Teguh SutantoLaki-Laki	6700000		1000000		200000
    Dome		007	Marjiono	Laki-Laki	3500000		500000		100000
    Finance		005	Koko Udoyo	Laki-Laki	8500000		1000000		100000
    Finance		013	Aries Saptono	Laki-Laki	3500000		500000		100000
    Finishing	036	Supendi		Laki-Laki	3400000		500000		100000
    Inventory	033	Sukamto		Laki-Laki	3300000		500000		100000
    

    tanya saya lagi…
    bagaimana caranya untuk menampilkan data satu saja untuk NAMA_BAGIAN , apakah ini menggunakan perintah count ???

    mohon pencerahannya pak,,,

    • Coba mas pakai SUM, karena jenis datanya bukan hitungan tetapi penjumlahan, tinggal sedikit lagi mas, di GROUP BY NAMA_BAGIAN

  • kira kira untuk sintax sum nya gimana ya pak ? saya ingin menambahkan kolom baru KARYAWAN untuk jumlah NAMA_BAGIAN

    • Coba seperti ini mas

      SELECT ..., ..., SUM(NAMA_BAGIAN) AS KARYAWAN
      

      jadi setiap item pada SELECT akan menghasilkan kolom baru

  • Assalamu alaikum, Mas. Mohon bantuannya sedikit nih mas, saya menghadapi kesulitan menentukan sintaksnya.

    nama database: sipanter2
    nama tabel: contoh

    id 	nama 	alamat 	        kode 	status
    1 	Anita 	JL. PEPAYA 	A01 	RUMAH KOSONG
    2 	Alex 	JL. WARINGIN 	A02 	NORMAL
    3 	BUDI 	JL. KATES 	A03 	NORMAL
    4 	Anita 	JL. PEPAYA 	A01 	RUMAH KOSONG
    5 	ALEX 	JL. WARINGIN 	A02 	RUMAH KOSONG
    6 	BUDI 	JL. KATES 	A03 	NORMAL
    7 	Anita 	JL. PEPAYA 	A01 	RUMAH KOSONG
    8 	Alex 	JL. WARINGIN 	A02 	RUMAH KOSONG
    9 	BUDI 	JL. KATES 	A03 	RUMAH KOSONG
    10 	Anita 	JL. PEPAYA 	A01 	RUMAH KOSONG
    11 	Alex 	JL. WARINGIN 	A02 	NORMAL
    12 	BUDI 	JL. KATES 	A03 	NORMAL
    13 	Anita 	JL. PEPAYA 	A01 	RUMAH KOSONG
    14 	Alex 	JL. WARINGIN 	A02 	NORMAL
    15 	BUDI 	JL. KATES 	A03 	NORMAL
    16 	Anita 	JL. PEPAYA 	A01 	NORMAL
    17 	Alex 	JL. WARINGIN 	A02 	NORMAL
    18 	BUDI 	JL. KATES 	A03 	NORMAL
    

    jadi, saya mau menampilkan id, nama, alamat, dan kode yang memiliki status ‘RUMAH KOSONG’ sebanyak 3 kali.
    mohon bantuannya mas… 🙂

    • Saya kurang faham mas output yang diinginkan seperti apa?
      atau mungkin querynya seperti ini?

      SELECT id, nama, alamat, kode
      FROM contoh
      WHERE status = "RUMAH KOSONG"
      GROUP BY nama
  • output yang saya inginkan yaitu menampilkan nama, alamat, dan kode pelanggan yang mempunyai status=RUMAH KOSONG sebanyak 3 kali. dalam hal ini, seharusnya yang tampil kan Anita karena mempunyai status RUMAH KOSONG sebanyak 5 record.

    jadi yg ingin saya tampilkan seperti ini mas,
    Anita | JL. PEPAYA | A01

    kira2 seperti itu mas.
    mohon bntuannya 🙂

    • Coba gunakan HAVING mas:

      SELECT id, nama, alamat, kode, COUNT(IF(status="RUMAH KOSONG",id,null)) as jml_status
      FROM contoh
      GROUP BY kode
      HAVING jml_status > 2
  • maaf pak saya mau tanya saya membuat form absensi, dengan langkah awal memilih tahun untuk memuncilkan jumlah laporan per bulan selama satu tahun, apabila saya pilih tahun 2016 maka dari bulan januari sampai desember akan muncul, itu caranya gimana ya pak?

    tampilannya: nama jan feb mar april mei dst
    rizki 10 12 13 14 15 dst

  • mas mau tanya. saya kan bikin web sms gateway delivery order makanan. nah saya mau nampilin misalkan dalam satu hari ini makanan apa aja yang sudah terjual.
    nanti hasilnya pgn seperti ini:
    no nama totalharga
    1 ayam bakar 350000

    tabel apa yg harus dibuat untuk nyimpen data order nya ya mas sama field2 nya apa aja ya mas? soalnya kan saya pake explode buat mecah2 kata dari isi pesan nya, bingun buat cara masukin ke database nya, kalo buat nampilin bukti pesanannya udah bisa

    mohon bantuan nya mase..

    • Untuk informasi yang disimpan dalam database di buat sesuai yang dibutuhkan mas, hingga jauh kedepan, baik untuk sendiri, middle, maupun top management setelah itu baru membuat requirement input nya, untuk masalah explode, split, dll yang terkait teknis memasukkan data ke database, seharusnya tidak menghalangi / membatasi data yang dibutuhkan.

      untuk contoh diatas mungkin bisa dibuat dua tabel mas

      tabel: menu
      id kd_menu nama_menu harga

      tabel: order
      id kd_menu jml_order no_hp tgl_order status kasir

  • saya mau tanya mas, saya kan buat web reservasi nah terus saya kebingungan query nya. di database ada kolom tanggalreservasi, jamreservasi, nama, jenisreservasi. saya tanya query untuk, bagaimana orang yang reservasi pada tanggal 05/03/2016 maksimal reservasi hanya 10 orang. tolong dibantu mas, terimakasih

    • Coba jalankan query untuk menghitung record tanggal tersebut, kemudian pakai conditional IF di program aplikasinya, jika jumlahnya masih dibawah 10, jalankan query INSERT.

      Jika conditional IF mau full pakai query bisa dipelajari query berikut:

      INSERT INTO supply (tanggal, bahan, jml_supply, gudang)  
      	SELECT "01/04/2016", "Terigu", 25, "TENGAH"
      	FROM supply
      	WHERE tanggal = "01/04/2016" AND bahan = "Terigu" 
      	HAVING COUNT(bahan) < 3
      

      Kode diatas akan meng INSERT data pada tabel supply jika bahan Terigu dengan tanggal 01/04/2016 jumlahnya kurang dari 3

  • 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,

    +------------+--------+---+--------+
    | Nama       | 1 | 2  | 3 | 4... dst
    +------------+--------+---+--------+
    | Erwin      | K | K  | A | dst    |
    | Hardi F    | A | K  | A | dst    |
    | Retno      | K | A  | K | dst    |
    | Sanjaya    | K | K  | K | dst    |
    +------------+--------+------------+
    

    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

    +------------+-------+--------+
    | Nama       | Alpha | Hadir  |
    +------------+-------+--------+
    | Erwin      | 1     | 2      |
    | Hardi F    | 2     | 1      |
    | Retno      | 1     | 2      |
    | Sanjaya    | 0     | 3      |
    +------------+--------+-------+
    

    tolong dibantu mas, terimakasih

    • Kalau saya membaca itu penjumlahan per kolom ya mas? misal untuk Erwin kolom 1 + 2, sehingga alphanya 1, hadirnya 2.
      Jika ya, maka untuk kondisi seperti itu kita hanya bisa menjumlahkan nya dengan penjumlahan biasa, misal kolom 1 + 2 dst, tidak dapat menggunakan fungsi SUM(), COUNT(), dll

      Untuk contoh diatas bisa dicoba query ini mas:

      SELECT 	nama,
      		IF(col_1 = "K", 1, 0) + IF(col_2 = "K", 1, 0) + IF(col_3 = "K", 1, 0) + IF(col_4 = "K", 1, 0) AS Hadir,
      		IF(col_1 = "A", 1, 0) + IF(col_2 = "A", 1, 0) + IF(col_3 = "A", 1, 0) + IF(col_4 = "A", 1, 0) AS Alpha
      FROM daftar_hadir
  • mohon bantuan mas agus, saya ingin menampilkan data yang tidak sama berdasarkan kataegori dan id_usernya,
    database saya begini mas :

    table kategori : 
    +-------------+-------------+
    | id_kategori | nm_kategori |
    +-------------+-------------+
    |       1     | Asuransi    |
    |       2     | Makanan     |
    |       3     | penginapan  |
    |       4     | Komputer    |
    |       5     | Bengkel     |
    +-------------+-------------+
    
    Table jenis
    +----------+-------------+----------------+
    | id_jenis | id_kategori | nm_jenis       |
    +----------+-------------+----------------+
    |     1    |      1      | Asuransi Mobil |
    |     2    |      1      | Asuransi rumah |
    |     3    |      2      | Restoran       |
    |     4    |      2      | Catring        |
    |     5    |      3      | Hotel          |
    |     6    |      4      | Srv Komputer   |
    |     7    |      4      | Srv Printer    |
    |     8    |      5      | Bengkel Motor  |
    |     9    |      5      | Bengkel Mobil  |
    +----------+-------------+----------------+  
    
    table user
    +---------+-----------+
    | id_user | nm_user   |
    +---------+-----------+
    |    1    | Andi      |
    |    2    | Budi      |
    |    3    | Cinta     |
    +---------+-----------+
    
    table keahlian
    +-------------+---------+----------+
    | id_keahlian | id_user | id_jenis |
    +-------------+---------+----------+
    |      1      |    1    |     1    |
    |      2      |    1    |     6    |
    |      3      |    1    |     9    |
    |      4      |    2    |     4    |
    +-------------+---------+----------+
    

    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

    +----------+-------------+----------------+
    | id_jenis | id_kategori | nm_jenis       |
    +----------+-------------+----------------+
    |     2    |      1      | Asuransi rumah |
    |     3    |      2      | Restoran       |
    |     4    |      2      | Catring        |
    |     5    |      3      | Hotel          |
    |     7    |      4      | Srv Printer    |
    |     8    |      5      | Bengkel Motor  |
    +----------+-------------+----------------+ 
    

    mohon bantuan untuk koding lengkap php nya ya mas :
    soalnya masih belajar ini mas…
    terimakasih sebelumnya

    • Coba Pakai NOT IN mas:

      SELECT * 
      FROM `tabel_jenis` 
      WHERE id_jenis 
      		NOT IN (
                  	SELECT id_jenis 
                  	FROM tabel_keahlian 
                  	WHERE id_user = 1
              )
      
  • Selamat malam mas, maaf ganggu, setelah saya roll semua ternyata yang saya mau tidak ada, maskalo buat rumusan pada atrribute/field total, include Total harga diskon dibawah ini, bgmana ya, thanks sebelunya

    Kode_barang  Nama_Barang  Harga     satuan  Diskon  Total
    T101         Komputer     7.000.000    2      5%      ?
    T201         USB            150.000    5      7%      ?
    
  • Misi master, saya punya tabel normalisasi dan kolomnya itu antara lain nama, nim, kriteria A, kriteria B, kriteria C, kriteria D, kriteria E. Nah yg saya kan mau menghitung tiap klom kriterianya dengan formula (misal : menghitung kolom kriteria A : nilai dr kriteria A dibagi nilai terbesar dr kriteria A berdasarkan nama dan nim) itu rumus normalisasi spk mastah, nah itu querynya gimana ya?? Tolong bgt mastah, thanks…

  • mas mau tanya?
    saya punya tabel invetaris…
    dengan kolom sbb..
    kode, katagori, nama barang, baik, buruk, hilang, total

    lah script otomatis dari data (baik, buruk, hilang) nanti hasilnya otomatis terimput di kolom total yang saya buat…

  • 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

    No	Id Pendaftaran	Nama	Pilihan 1	Pilihan 2	Rata2	Tulis	Total	Lulus	
    1	PSB/12/2013	Putri	Multimedia	Pemasaran	75	90	240	LULUS	
    2	PSB/14/2013	Rina	Akuntansi	Pemasaran	75	90	165	LULUS	
    3	PSB/10/2013	Rani 	Akuntansi	Pemasaran	78	90	165	LULUS	
    4	PSB/15/2013	Nina	Akuntansi	Pemasaran	75	80	155	LULUS	
    5	PSB/13/2013	Budi	Multimedia	Pemasaran	150	80	155	LULUS
    
    • Pakai bahasa programnya apa mbak? untuk logic seperti itu saya rasa terlalu kompleks jika dikerjakan hanya di SQL, karena fiturnya terbatas.

  • Agak sulit menentukan variable untuk membatasi kapasitasnya. Klo misalkan pakai no atau id pendaftaran Terus saya If else pas dibawah kapasitas betul pas pendaftar lebih dari kapasitas tersedia jadi tidak diterima semuanya.

    • Perlu dipastikan dulu mbak:
      1. ini bener tabel nya yang kemarin itu?
      2. yang menjadi acuan nilai field apa?
      3. terus field rata2, tulis, total isinya tentang apa?
      4. Ini mau mengolah data pada tabel tersebut untuk diambil 380 sesuai kuota yang ada?

  • Mas saya mau nanyak, saya punya tiga tabel yaitu TblMapel, TblKelas, TblJadwal

    TblMapel
    ---------
    Kode_Mapel| Mapel| KKM|
    P001| Matematika| 60|
    P002| Bahasa Indonesia| 70|
    
    TblKelas
    ---------
    Kode_Kelas| Kelas| Tahun_Ajaran|
    K001| 10TKJ1| 2016/2017|
    K002| 10TKJ2| 2016/2017|
    
    
    TblJadwal
    ----------
    Kode_Kelas| Kode_Mapel| Hari|
    K001| P001| Senin|
    K001| P001| Senin|
    K001| P002| Selasa|
    K001| P001| Selasa|
    
    

    yang mau saya tanyakan, bagaimana sintaks SQL untuk menghasilkan data dengan struktur seperti berikut?

    SENIN		| SELASA		| RABU			| KAMIS			| JUMAT			| SABTU			|
    Matematika	| Bahasa Indonesia	| Bahasa Indonesia	| Bahasa Indonesia	| Bahasa Indonesia	| Bahasa Indonesia	|
    Matematika	| Matematika		| Matematika		| Matematika		| Matematika		| Matematika		|
    

    mohon bantuannya mas. Terima kasih..

    • Untuk semacam itu (pivot tabel – row to column) tidak bisa dikerjakan di SQL mas, karena per row nya nanti akan diambil satu, karena akan di group, sehingga tidak bisa misal di kolom SENIN muncul Matematika dua kali

  • Ralat sedikit Maaf gak rapih.
    if ($no <=2 AND $r[pil_1] == 'Akuntansi'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_1] == 'Administrasi Perkantoran'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_1] == 'Pemasaran'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_1] == 'Multimedia'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_1] == 'Akomodasi Perhotelan'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_2] == 'Akuntansi'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_2] == 'Administrasi Perkantoran'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_2] == 'Pemasaran'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_2] == 'Multimedia'){
    echo"DITERIMA“;
    }
    elseif ($no <=2 AND $r[pil_2] == 'Akomodasi Perhotelan'){
    echo"DITERIMA“;
    }
    else
    {
    echo”TIDAK DITERIMA”;
    }

    • Coba saya rapikan mbak, jika ada tambahan jurusan dan quota tinggal tambahkan dalam variabel array $jurusan. Pada prinsipnya jika kode yang kita tulis mulai panjang dan susah dipahami itu, tandanya perlu dipertimbangkan untuk mengubah kodenya

      // Definisikan dulu quota masing masing jurusan. Kita buat variabel quota misal: $quota_Akuntansi
      $jurusan = array('Akuntansi' => 100, 'Multimedia' => 100, 'Administrasi' => 80, 'Hotel' => 50, 'Pemasaran' => 50);
      foreach ($jurusan as $jur => $quota)
      {
      	${'quota_' . $jur} = $quota;
      }
      
      if ($total > 100){
      	echo"LULUS";
      } else {
      	echo"TIDAK LULUS";
      }
      
      // Jika quota jurusan 1
      if (${'quota_'.$r['pil_1']})
      {
      	echo 'DITERIMA';
      	
      	// Kuota jurusan dikurangi satu
      	${'quota_'.$r['pil_1']}--;
      	
      } elseif (${'quota_'.$r['pil_2']}) { // Jika quota jurusan 2
      	
      	echo 'DITERIMA';
      	
      	// Kuota jurusan dikurangi satu
      	${'quota_'.$r['pil_2']}--;
      } else { // Jika quota habis
      	
      	echo 'TIDAK DITERIMA';
      }
  • Trimakasih banget mas sangat membantu. tapi saya coba batasi kuota menjadi 2 agar mudah pengecekan, tp yang diterima lebih dari 2. Apa saya ada salah di querynya?

    • Dari script nya saya tidak tahu variabel $no itu untuk kuota apa mbak? kuota keseluruhan atau jurusan? kalau kuota jurusan berbeda beda. Intinya alur logic nya:

      1. Definisikan variabel quota masing masing jurusan
      2. Bandingkan jurusan dengan kuota jurusan, jika masih, maka diterima dan kuota jurusan dikurangi 1
      3. Jika habis, bandingkan pilihan 2 dengan kuota jurusan, jika masih, maka diterima kuota jurusan dikurangi 1
      4. Jika habis, maka tidak diterima
  • Maaf yah mas jadi banyak nanya udah dicoba berhari2 masih ada yg kurang sedikit. Kodingnya saya ganti sama punya mas, hasilnya masih belum sesuai.

    Hasil yg diinginkan yaitu silvia bisa diterima karena pilihan 2 di multimedia masih kosong 1. Jadi kuota Akuntansi dan Multimedia bila dijumlahkan adalah 6. Maka ke 6 siswa tersebut diterima.

  • mas mau nanya
    saya punya 2 tabel

    tabel pesanan : dalam satu kali pesan pelanggan memesan banyak produk
    ----------------------------------------------------------------------
    kode_pesanan | kode_produk | jml_pesanan | pelanggan  |   tanggal  |
          46     |	P001	   |	7	 |   Febri    | 2016-05-28 |
          47     |	P002	   |	5	 |   Febri    | 2016-05-28 |
          48     |	P004	   |	3	 |   Febri    | 2016-05-28 |
          49     |	P001	   |	8	 |  Sabrina   | 2016-05-29 |
          50     |  P003	   |    2	 |  Sabrina   | 2016-05-29 |
    
    
    tabel produk
    -------------
    kode_produk | harga | 
        P001    | 2000  |  
        P002    | 4000  |  
        P003    | 3000  |  
        P004    | 5000  |  
     
    
    dengan rumus = (jml_pesanan*harga)+pajak 10%
    yang mau saya tanyakan bagaimana sintaks SQL untuk menghasilkan data dengan struktur seperti berikut:
    
    pelanggan  | jumlah |	tanggal  |
      Febri    |  53900 | 2016-05-28 |
     Sabrina   |  24200 | 2016-05-29 |
    

    mohon bantuannya mas terimakasih

    • Coba pakai query ini mbak:

      SELECT pelanggan,
      	 SUM( ( jml_pesanan * harga ) + (10/100 * jml_pesanan * harga) ) as jumlah,
      	tanggal
      FROM pesanan 
      LEFT JOIN produk USING(kode_produk) 
      GROUP BY pelanggan, tanggal
  • om saya nanya dunk
    saya punya 3 table
    anggota, simpanananggota dan pinjaman

    dimana keynya id_anggota disetiap table

    nah permasalahan saya mas untuk sqlnya menampilkan data
    semua anggota dan menjumlah total pinjaman anggota bila
    di tabel pinjaman itu ada anggota telah meminjam 2 kali atau lebih
    dan menampilkan semua data anggota juga
    bagaimana pembuatan sqlnya penggabungan join sum dan distintc
    untuk menampilkan semua data anggota,simpanan anggota, dan pinjaman jika dia ada pinjaman lebih dari 1 dan menjumlahkan total pinjaman anggota tersebut
    terima kasih om sebelumnya

    • Saya belum jelas maksud pertanyaannya mas, coba diperinci sekalian contoh data tabelnya, misal:

      Contoh tabel …. :
      output yang diinginkan:
      1
      2
      3

      contoh tabel ….
      output yang diinginkan:
      1
      2
      3

      • Tabel Anggota

        IDANGGOTA  NAMA 
             1      AAA
             2      BBB
             3      CCC
             4      DDD
        
        Tabel Simpanan
        
        IDANGGOTA   SIMPANAN
             1        10000  
             2        30000
             3        60000
             4        60000 
        
        
        Tabel Pinjaman 
        
        ID      ID Anggota  JumlahPinjam
        1            1         20000
        2            2         50000 
        3            3         60000  
        4            2         70000 
        5            1         10000
        6            2         25000
        
        
        yang pengen saya hasilkan ditabel
        
        IDANGGOTA     Nama    Total Simpanan    Total Pinjaman
           1           AAA        10000            30000
           2           BBB        30000           145000
           3           CCC        60000            60000
           4           DDD        60000               0    
        
        

        begitu kira2 mas yang ingin saya tanyakan

        terima kasih

  • Assalamualaikum Pak, mau nanya bagaimana yah menampilkan nama dan kota pegawai tapi yang di tampilkan itu yang hanya memiliki gaji tertinggi dan gaji terendah?

    • Waalaykumsalam, coba pakai max dan min mas:

      SELECT nama, kota, MAX(gaji) AS gaji_tertinggi, MIN(gaji) as gaji_terendah FROM pegawai)
      Hasilnya:
      | nama | kota | gaji_tertinggi | gaji_terendah |
      

      atau bisa menggunakan union

      SELECT nama, kota, gaji FROM pegawai ORDER BY gaji DESC limit 1
      UNION SELECT nama, kota, gaji FROM pegawai ORDER BY gaji limit 1
      
      Hasilnya dua baris, baris pertama gaji tertinggi, baris kedua gaji terendah:
      | nama | kota | gaji |
      
  • Assalamualaikum Pak, Mau nanya.
    gimana caranya kita mau hitung jumlah data berdasarkan alamat, tapi alamatnya itu panjang dan ada sebagian alamat yang lokasinya sama.
    misal ada data :
    1. alamat si A = Lingkungan Mangga RT 01 RW 01
    2. alamat si B = Mangga RT 01 RW 02
    3. alamat si C = Lingkungan Jeruk RT 01 RW 01
    gimana query jika mau hitung jumlah data dengan kondisi salah satu alamat dengan satu kata kunci dari kalimat alamat. misalnya alamat si A sama seperti alamat si B, tapi dalam database si B tidak ada Lingkungan. jadinya gimana cara menghitung alamat yang ada di lingkungan mangga, walaupun dalam database ada yang tidak menuliskan lingkungan hanya menulis mangga saja.
    terimah kasih

  • begini gan….
    sy punya tabel karyawan (t_karyawan) dan ada 12 field …
    salah satu fieldnya departement (dept) dan isi dari departemetn itu ada 9 (produksi,marketing,comersial,dll) … jadi sya mau nampilkan departement(dept) beserta jumlah orang yang berada di departement itu gan… jadi intinya tampilannya itu gan begini …

    departement banyak
    produksi 10
    marketing 20
    comesial 30

    na itu sintaknya bagaimana gan? tolong sekali gan sy uda cba” banyak listing cma belum berhasil???

    • Coba query seperti ini mas:

      SELECT departement, COUNT(karyawan) AS jml_karyawan
      FROM t_karyawan
      GROUP BY departement
      
      • wow, work gan, makasih sekali gan,,,
        ada lagi ni gan,,,
        di departement itu terbagi lagi sesuai field jabatan gan …
        seperti di departement produksi ada 10 orang , na 10 orang itu memiliki jabatan masing”,
        seperti (pimpinan,sekretaris,bendahara)

        jadi ntar dia nampil kaya bgni gan…

        produksi  | jabatan
        pimpinan  | 1 orang
        sekretaris| 4 orang
        bendahara | 5 orang 
        

        itu bagaimana gan?

        • Itu tabel tersendiri ya mas? coba pakai query yang sama mas:

          SELECT jabatan, COUNT(karyawan) AS jml_karyawan
          FROM t_departemen
          GROUP BY jabatan
  • mas saya mau tanya kalo mau menghitung total jumlah absensi setiap siswa baik itu(hadir,izin,alpa)

    Memo : nip (guru pengajar kelas)
           idabsensi (primary key)
    tbl_absensikelas
    ---------------------------------------------
    id_absen | nip |kode_kelas |jumlah_siswa|siswa_hadir|siswa_izin|siswa_alpa |
    ----------------------------------------------------------------------------
    M0001    | 001 | K01       | 5          | 3         |   1      |  1        |
    M0002    | 003 | K01       | 5          | 5         |   0      |  0        |
    M0003    | 001 | K01       | 5          | 1         |   3      |  1        |
    
    
    berelasi dengan table detail_absensi 
    
    tbldetail_absensi 
    id_absen(Pk) | nis | status_absensi | keterangan |
    M0001        | A1  | H              |            |
    M0001        | A2  | I              |            |
    M0001        | A3  | A              |            |
    M0001        | A4  | H              |            |
    M0001        | A5  | H              |            |
    M0002        | A1  | H              |            |
    M0002        | A2  | H              |            |
    M0002        | A3  | H              |            |
    M0002        | A4  | H              |            |
    M0002        | A5  | H              |            |
    M0003        | A1  | H              |            |
    M0003        | A2  | I              |            |
    M0003        | A3  | I              |            |
    M0003        | A4  | I              |            |
    M0003        | A5  | A              |            |
    

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

         nis   |  jumlah_hadir | jumlah_alpa |  jumlah_izin|
         A1    |     3         |    0        |     0       |
         A2    |     1         |    0        |     2       | 
         A3    |     1         |    1        |     1       |
         A4    |     2         |    0        |     1       |
         A5    |     2         |    1        |     0       |
    
    • Coba gunakan query ini mas:

      SELECT nis,
      		COUNT(IF(status_absensi = "H", status_absensi, NULL)) AS jumlah_hadir,
              COUNT(IF(status_absensi = "H", status_absensi, NULL)) AS jumlah_alpa,
              COUNT(IF(status_absensi = "I", status_absensi, NULL)) AS jumlah_ijin       
      FROM `tbldetail_absensi`
      GROUP BY nis

      Hasil:

      +-----+--------------+-------------+-------------+
      | nis | jumlah_hadir | jumlah_alpa | jumlah_ijin |
      +-----+--------------+-------------+-------------+
      | A1  |            3 |           3 |           0 |
      | A2  |            1 |           1 |           2 |
      | A3  |            1 |           1 |           1 |
      | A4  |            2 |           2 |           1 |
      | A5  |            2 |           2 |           0 |
      +-----+--------------+-------------+-------------+
  • Halo Mas Agus,
    Saya mau buat database karyawan dengan SQL pakai VB, bagaimana caranya menampilkan record nya didalam tabel dengan field : NIK,Nama,Tanggal..

    Sekarang saya membuat field untuk menyimpan transaksinya, dari Field 1 sampai 31 sesuai dengan tanggal, apakah ada solusi yang lain untuk masalah yang saya hadapi ini mas ??

    Contoh Tabel :

    NamaKaryawan
    Bulan
    [1]
    [2]

    [31]

    Field tersebut menyimpan tanda kehadiran karyawan,

    Bisa bantu di sederhanakan mas,
    Terimakasih sebelumnya

    • 1. Coba menggunakan query ini mas: SELECT, nik, nama, tanggal FROM karyawan
      2. Intinya kalau field isinya bisa lebih dari satu/banyak, maka pertimbangkan unntuk dijadikan row. Untuk contoh diatas, coba tabelnya dibuat seperti ini mas:

      NIK | tgl | bln | thn | jam_mmasuk | jam_pulang | field lainnya

      Kemudian pas menampilkannya bisa dibuat seperti pivot table:

      NIK | Bulan        | 1 | 2 | 3 | ...
      132 | Januari 2016 | V | - | V | ...
      
  • Dear Mas Agus..
    Terimakasih atas respon nya 🙂

    Kalau untuk menampikan seperti yang mas maksud sudah saya lakukan mas, akan tetapi ini ada permintaan user susunan baru lagi dimana laporan harian absennya model kesamping, seperti ini :

    Nama Karyawan | 1|2|3|4|5|dst..
    Hendra        | V|A|V|V|S|..
    

    ———————————–
    Mohon pencerahan ya mas..

    Terimakasih

    • Sama sama mas 😀
      Jika struktur tabel sudah seperti kemarin, untuk mendapatkan hasil seperti itu, coba gunakan CASE mas (karena kondisi lebih dari satu), misal:

      SELECT nama,
      			CASE WHEN tgl = "01" AND jam_masuk != ""
      			THEN "V"
      			ELSE "A"
      			END AS tgl_1,
      			CASE WHEN tgl = "02" AND jam_masuk != ""
      			THEN "V"
      			ELSE "A"
      			END AS tgl_2,
      			dst..
      FROM absensi
      LEFT JOIN karyawan USING(kode_karyawan)
      WHERE bulan = 01 AND tahun = 2016
      GROUP BY kode_karyawan
  • mas saya pingin tanya, saya membuat aplikasi absensi, kalo ingin membuat isi dari field nya 20 dari tb-_absen untuk 3 orang yaitu andi, sari, mega..(field nya= nis,nama,tmp_lahir,tgl_lahir, kehadiran….) kalo pengen menghitung jumlah kehadiran tiap masing masing gimana,, menggunakan syntak sql

  • Saya Punya tabel seperti ini mas
    Nama Departemen | A | B | C | D | TOTAL Ket : A,B,C,D = Jumlah orang pada divisi ABCD

    *contoh data*
    Kebudayaan | 3 | 2 | 4 | 1 | 10

    Kira2 querynya seperti apa ya mas dan bagaimana cara menjalankannya di php

      • untuk menampilkan nama departemen dan menghitung jumlah ada berapa orang pada divisi a,divisi b,divisi c,divisi d kemudian dijumlahkan semua jumlah orang yang ada divisi tsb dalam kolom TOTAL

        • Bisa keduanya tergantung kebutuhan mas, Untuk COUNT IF maka akan menghitung BANYAKNYA ROW dengankan untuk SUM maka kan menjumlahkan ISI dari row
          mungkin querynya bisa seperti ini mas:

          SELECT departemen, SUM(divisi_a) as divisi_a, SUM(divisi_b) as divisi_b
          FROM tabel
          GROUP BY departemen
          
  • A. Tampilkan semua data dalam tabel kota yang id-nya berada di antara nomor 50-100 dan nama kotanya diakhiri dengan ‘ra’. Hasil seperti screenshot berikut

    kasus :
    Bagaimna jika maksud saya menulis nama kolom tapi yang terbaca nama tabelnya karena nama kolom dan tabelnya sama bagaimna cr penulisan yang benar mas?

    ini scriptx

    — RAHMANIAR ZAHRA QUEEN
    SELECT *
    FROM city————————————->ini tabel
    WHERE city LIKE ‘_ra%’ AND city_id BETWEEN 50 AND 100;

    • Langsung saja mbak

      SELECT *
      FROM city
      WHERE city LIKE ‘_ra%’ AND city_id BETWEEN 50 AND 100;
      
      atau pakai alias
      
      SELECT *
      FROM city as c
      WHERE c.city LIKE ‘_ra%’ AND city_id BETWEEN 50 AND 100;
      
  • maaf saya mau tanya kalo mencari data skor yg paling banyak gimana ya ? saya bingung untuk tata letaknya .
    datanya seperti ini

    tbl_pertandinganDetail

    +------------------------------------+
    | kodepertandingan | kodeteam | skor |
    |------------------------------------|
    |      P0001	   |   T002   |   3  |
    P0001	T005	2
    P0002	T001	1
    P0002	T002	2
    P0003	T003	2
    P0003	T005	2
    P0004	T001	0
    P0004	T004	0
    P0005	T003	3
    P0005	T004	2
    P0006	T002	2
    P0006	T003	1
    +-------------------------+
    
    tbl_MsTeam
    +---------------------+
    | kodeteam | namateam |
    |---------------------|
    | T001     | persija  |
    | T002     | persebaya|
    | T003     | persib   |
    | T004     | persikota|
    | T005     | psis     |
    +---------------------+
    

    tolong bantuannya yaaa .

    • Untuk mencari nilai maksimal coba menggunakan MAX mbak:

      SELECT namateam, MAX(skor) as max
      FROM tbl_pertandingandetail
      JOIN tbl_msteam USING (kodeteam)
      

      Hasil:

      +-----------+------+
      | namateam  | max  |
      +-----------+------+
      | persebaya | 3    |
      +-----------+------+
  • Mas kalau saya mau menjumlahkan dan mengurangi jumlah uang pada tabel yang berbeda gimana? contohnya jumlah pada tabel kas umum kemudian ada pemasukan dan juga ada pengeluaran dari tabel berbeda. makasih mas..

  • mas saya minta petunjuk bagaimana menjumlah di dalam total kerja pada Nama Mesin Giling yang sama No Pk nya .trimakasih

    No Mesin | Nama Mesin | No Pk | Total Kerja
    Gil 001 Giling 112 6
    Gil 002 Giling 112 5
    Cuk001 Cukur 113 4
    Gil003 Giling 116 7
    Cuk002 Cukur 114 9

    • Coba mas:

      SELECT no_pk, SUM(total_kerja) AS total
      FROM `mesin` 
      WHERE nama_mesin = "Giling" 
      GROUP BY no_pk

      Hasil:

      +-------+-------+
      | no_pk | total |
      +-------+-------+
      | 112   |    11 |
      | 116   |     7 |
      +-------+-------+
      
  • mas mau nanya nih database saya bikin di mysql phpmyadmin, saya punya tabel gini nih mas misal tabel yang pertama yaitu penginputan kolomnya ada 4 yaitu:
    – kode_sapi dan nama sapi, harga_sapi, stok
    tabel kedua adalah tabel transaksi, dan kolom nya ada:
    – kode sapi, nama_sapi, nama_pembeli, jumlah beli, harga.
    nahh, kalau saya misal nginput kode_sapi 001, nama sapinya misalkan Brangus , ini saya input pada tabel penginputan, dan saya bingung gimana caranya di tabel transaksi, ketika saya memilih kode yang 001 tadi, nama sapi sama harga nya juga ngikut keluar di tabel transaksi, untuk jumlah beli , ketika si pembeli membeli misal sapi nya 10 ekor, gimana caranya supaya stok pada tabel penginputan itu bisa berkurang secara otomatis, bingung saya..semoga mas dapat membantu , terimakasih

    • Coba mas:
      1. Untuk menampilkan nama sapi dan harga sapi dari tabel pertama, gunakan join mas, seperti:

      SELECT t1.kode_sapi, t1.nama_sapi, t2.nama_pembeli, t2.jumlah_beli, t2.harga
      FROM tabel_2 AS t2
      LEFT JOIN tabel_1 AS t1 USING(kode_sapi)
      

      2. Untuk mengurangi jumlah stok secara otomatis bisa coba menggunakan trigger mas, jadi ketika ada suatu event terjadi pada tabel_2 maka otomatis tabel_1 akan ikut terupdate, coba di googling dulu ya mas…

  • Permisi mas, mau tanya
    Saya punya tabel seperti ini

    ID | JK | NILAI | KET
    1   P   A   Lulus
    2   P   B   Tidak
    3   L   B   Lulus
    4   L   A   Lulus
    5   P   C   Tidak
    6   L   A   Lulus
    7   L   C   Tidak
    8   P   B   Lulus
    9   L   A   Lulus
    

    Ingin menampilkan tabel seperti ini mas

    Atribut  | Nilai Atribut | Kasus Total | Kasus Lulus | Kasus Tidak Lulus
    JK P 4 2 2
    JK L 5 4 1
    Nilai A 4 4 0
    Nilai B 3 2 1
    Nilai C 2 0 2
    

    Mohon bantuan ya mas query mysqlnya seperti apa, seharian ini belum ketemu solusi. Terima kasih banyak mas.

    • 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 "JK" AS Atribut, 
      		jk AS "Nilai Atribut", 
      		COUNT(jk) AS "Kasus Total", 
      		COUNT(IF(ket="Lulus", 1, NULL)) AS "Kasus Lulus",
      		COUNT(IF(ket="Tidak", 1, NULL)) AS "Kasus Tidak Lulus"
      FROM `tabel_nilai`
      GROUP BY jk
      UNION
      SELECT "Nilai", 
      		nilai, 
      		COUNT(jk), 
      		COUNT(IF(ket="Lulus", 1, NULL)),
      		COUNT(IF(ket="Tidak", 1, NULL))
      FROM `tabel_nilai`
      GROUP BY nilai

      Hasil:

      +---------+---------------+-------------+-------------+-------------------+
      | Atribut | Nilai Atribut | Kasus Total | Kasus Lulus | Kasus Tidak Lulus |
      +---------+---------------+-------------+-------------+-------------------+
      | JK      | L             |           5 |           4 |                 1 |
      | JK      | P             |           4 |           2 |                 2 |
      | Nilai   | A             |           4 |           4 |                 0 |
      | Nilai   | B             |           3 |           2 |                 1 |
      | Nilai   | C             |           2 |           0 |                 2 |
      +---------+---------------+-------------+-------------+-------------------+
  • mas, saya ingin bertanya
    saya punya tabel karyawan, absen, dan golongan.
    pada tabel karyawan:

    nip | nama | alamat | jns_k | id_gol | absen
    111 | joni | surabaya | laki-laki | 2D | 27
    123 | rani | jakarta | perempuan | 2A | 15
    125 | ana  | yogya | perempuan| 3B | 20
    

    tabel absen :

    absen | nip| ket
    27 | 111 | hadir
    15 | 123 | hadir
    20 | 125 | hadir
    

    tabel gaji golongan :

     
    id_gol | jumlah
    2A | 500000
    2B | 1000000
    2C | 1500000
    2D | 2000000
    3A | 2500000
    

    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.

  • mohon maaf mas, yg tadi salah ini di query mysql yg saya coba

    SELECT a.nip, a.nama, a.alamat, a.jns_k, a.absen, a.no_telp, b.id_gol, b.jumlah, a.status, 
    	CASE WHEN a.status =  'menikah' AND a.absen >=20
    		THEN b.jumlah +200000 + ( a.absen *10000 ) 
    	WHEN a.status =  'menikah' AND a.absen < 20
    		THEN b.jumlah + ( a.absen *10000 ) 
    	ELSE b.jumlah
    		END AS gaji
    FROM karyawan a, golongan b
    WHERE a.id_gol = b.id_gol
    • Querynya sudah betul mbak, ada sedikit perbaikan di baris 4 menjadi WHEN a.status = 'menikah' AND a.absen < 20
      output:

      +-----+------+----------+-----------+-------+--------+---------+---------+---------+
      | nip | nama | alamat   | jns_k     | absen | id_gol | jumlah  | status  | gaji    |
      +-----+------+----------+-----------+-------+--------+---------+---------+---------+
      | 123 | rani | jakarta  | perempuan | 15    | 2A     |  500000 | menikah |  650000 |
      | 111 | joni | surabaya | laki-laki | 27    | 2D     | 2000000 | menikah | 2470000 |
      +-----+------+----------+-----------+-------+--------+---------+---------+---------+
  • Mas,mau tanya lagi.
    Kalo misal mau menambahkan tgl di tabel absen,kmdn setiap pegawai input absen melalui tgl dan ket(masuk). Bgmn cara mengubah dr format ket menjadi integer yg nanti bisa dijumlahkan menjadi gaji?

    • Maksudnya bagaimana ya mbak? disitu kan ket nya hadir, kalau diubah menjadi integer harusnya isinya bilangan. Untuk mengubahnya bisa dengan menggunakan perintah ALTER TABLE, atau lewat phpMyAdmin

      • iya mas , itu hadir bukan masuk
        misal di tabel absensi :

        id_absen | nip | tgl | ket 
        1 |  111 | 11/11/2015 | hadir
        

        nah, masksud saya tgl dan ket jika (hadir) akan menjadi 1, tetapi jika tgl dan ket (sakit/ijin/alpa) maka menjadi 0 dan akan disimpan di field absen tabel karyawan. dan itu akan bertambah jika pegawai selalu menginputkan tgl dan ket hadir. bagaimana yaa caranya mas ?

        • Menurut saya sebisa mungkin hindari penyimpanan atribut turunan seperti ini mbak, karena integritas data akan resisten, misal jika tabel absen ada yang dihapus atau diedit, data di tabel karyawan di field absen menjadi tidak akurat.

          Namun demikian jika terpaksa harus menggunakan hal yang demikian ini, bisa coba menggunakan trigger mbak, untuk event AFTER INSERT, AFTER UPDATE dan AFTER DELETE, dicoba googling dulu ya mbak…

  • Mas mau tanya, jika hitung data yang sama dalam kolom tertentu gimana?
    Misal:
    Database ‘data’ tabel ‘nama’
    Id nama tanggal
    1 johan 20/10/2016
    2 arifin 30/10/2016
    3 johan 12/11/2016
    4 gunawan 14/12/2016
    5 johan 17/12/2016

    Johan kan terulang 3kali (id 1,3,5) itu di hitung satu jadi total nama di tabel itu 3 orang ?? Gimana code phpnya??

  • kalo cara menghitung integer bisa ga mas (bukan jumlah kolom / baris tetapi isi tabelnya ) ? contohnya saya mau hitung total harga daripada sebuah member pada restaurant

  • Gan, mau tanya nie.. misal ada data…
    no || kode || jumlah
    1. || 151 || 5
    2. || 121 || 10
    3. || 151 || 19
    4. ||141 || 20
    5. || 181 || 18
    6. || 121 || 2

    nah saya mau jumlahkan jumlah itu berdasarkan kode.. jadi nanti hasilnya seperti ini
    no || kode || jumlah
    1. || 151 || 24
    2. || 121 || 12
    3. || 141 || 20
    4 || 181 || 18

    mohon pencerahannya

  • Mas, kalo kasusnya saya mau ngitung jumlah SD,SMP dan SMA yang memilih Ya atau Tidak di field pros 1 dan Pros2 pada tabel mhspilih
    dimana field sbb:

    pros1                Pros2              Jenjang
    Ya                    Ya                 SD
    Tidak                 Tidak             SD
    Ya                    Tidak             SMP
    Ya                    Ya                 SD
    Tidak                 Ya                 SMA
    Ya                    Tidak              SD
    Ya                    Ya                  SMP
    

    Hasil yang sy harapkan

    Jenjang             Pros1 (Ya)             Pros1 (Tidak)     Pros2 (Ya)      Pros2 (Tidak)
    SD                      3                           1                      2                2
    SMP                    2                           0                      1                1
    SMA                    0                           1                      1                0
    

    Maksih sebelumnya….

    • Coba pakai query ini mas:

      SELECT jenjang, COUNT(IF(pros1 = "Ya", 1, NULL)) AS "Pros 1 (Ya)",
      				COUNT(IF(pros1 = "Tidak", 1, NULL)) AS "Pros 1 (Tidak)",
      				COUNT(IF(pros2 = "Ya", 1, NULL)) AS "Pros 2 (Ya)",
      				COUNT(IF(pros2 = "Tidak", 1, NULL)) AS "Pros 2 (Tidak)"
      FROM sekolah
      GROUP BY jenjang

      Hasil:

      +---------+-------------+----------------+-------------+----------------+
      | jenjang | Pros 1 (Ya) | Pros 1 (Tidak) | Pros 2 (Ya) | Pros 2 (Tidak) |
      +---------+-------------+----------------+-------------+----------------+
      | SD      |           3 |              1 |           2 |              2 |
      | SMA     |           0 |              1 |           1 |              0 |
      | SMP     |           2 |              0 |           1 |              1 |
      +---------+-------------+----------------+-------------+----------------+
  • Maaf niih mas ganggu lagi… Salah Bertanya sy Mas…. gini aja di persempit aja,.. sy mau hitung field pros1

    pros1               Jenjang
    ===========================
    "1"                  SD
    "2"                  SD
    "1"                  SMP
    "1"                  SD
    "2"                  SMA
    "1"                  SD
    "1"                  SMP
    =========================
    

    Hasil Output yang sy harapkan :

    sd1  = 3
    sd2  = 1
    smp1 = 2
    smp2 = 0
    sma1 = 0
    sma2 = 1
    

    Makasih Sebelumnya… Mohon Maaf sebelumnya Mas

    • Coba pakai query ini mas:

      SELECT CONCAT(jenjang, pros1) AS jenjang, 
      		COUNT(pros1) AS pros1
      FROM `sekolah` 
      GROUP BY jenjang, pros1

      Hasil:

      +---------+-------+
      | jenjang | pros1 |
      +---------+-------+
      | SD1     |     3 |
      | SD2     |     1 |
      | SMA2    |     1 |
      | SMP1    |     2 |
      +---------+-------+
        • udah Mas,… tp klo datanya sy mau simpan dalam Variabel gimana caranya mas… Nantinya Variabelnya

          sd1 = 3
          sd2 = 1
          smp1 = 2
          smp2 = 0
          sma1 = 0
          sma2 = 1

          minta maaf nih.. trlalu bnyk bertanya…

          • iya mas, tidak apa-apa 😀

            Coba pakai variable – variables mas:

            $sql = 'SELECT CONCAT(jenjang, pros1) AS jenjang, 
            				COUNT(pros1) AS pros1
            		FROM `sekolah` 
            		GROUP BY jenjang, pros1';
            $stmt = $pdo->prepare($sql);
            $stmt->execute();
            while ($row = $stmt->fetch())
            {
            	${$row['jenjang']} = $row['pros1'];
            	echo $row['jenjang'];
            }
            
            echo $SD1;

            Variable bersifat case sensitive tergantung bentuk datanya

  • mas boleh minta emailnya, saya mau nanya tapi data nya agak bersifat rahasia ini mo tanya langsung lewat email saja .

  • errornya di
    $stmt->execute();

    maaf soalnya newbie nih mas… baru belajar-Belajar

    klo di definisikan Variabelnya di taruh dimana ya mas..?

    sd1, sd2, smp1, smp2, sma1 dan sma2

    • Coba menggunakan mysqli mas biar lebih mudah. Buat file php, copy paste kode berikut, kemudian jalankan:

      <?php// Open Connection
      $con = @mysqli_connect('localhost', 'root', '', 'nama_database');
      
      if (!$con) {
          echo "Error: " . mysqli_connect_error();
      	exit();
      }
      
      // Some Query
      $sql 	= 'SELECT CONCAT(jenjang, pros1) AS jenjang, 
      				COUNT(pros1) AS pros1
      		FROM `sekolah` 
      		GROUP BY jenjang, pros1';
      $query 	= mysqli_query($con, $sql);
      while ($row = mysqli_fetch_array($query))
      {
      	/* 
      		Mendefinisikan variabel secara dinamis, 
      		misal ketika $row['jenjang'] isinya SD1,
      		maka akan terdefinisi variabel $SD1 = $row['pros1'], dst
      	*/
      	$$row['jenjang'] = $row['pros1'];
      }
      
      // Tes Variabel nya
      echo $SD1; // hasilnya 3
      

      Lebih lanjut tentang variabel: http://jagowebdev.com/memahami-variabel-pada-php/
      MySQLi dan PDO: http://jagowebdev.com/menghubungkan-mysql-dengan-php-mysqli-dan-pdo/

  • 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

    +------------------+-------------------------------------+------+-----+---------+----------------+
    | Field            | Type                                | Null | Key | Default | Extra          |
    +------------------+-------------------------------------+------+-----+---------+----------------+
    | id_absen     	   | int(11)                             | NO   | PRI | NULL    | auto_increment |
    | keterangan  	   | enum('hadir','izin','sakit','alpa') | NO   |     | NULL    |                |
    | tanggal          | date                                | NO   |     | NULL    |                |
    | nis              | varchar(15)                         | NO   |     | NULL    |                |
    | idRuang_Kelas    | int(5)                              | NO   |     | NULL    |                |
    | idmata_pelajaran | int(10)                             | NO   |     | NULL    |                |
    | semester         | enum('Ganjil','Genap')              | NO   |     | NULL    |                |
    | thn_ajaran       | varchar(9)                          | NO   |     | NULL    |                |
    +------------------+-------------------------------------+------+-----+---------+----------------+
    8 rows in set (0.10 sec)
    
  • +----------+------------+------------+------+---------------+------------------+----------+------------+
    | id_absen | keterangan | tanggal    | nis  | idRuang_Kelas | idmata_pelajaran | semester | thn_ajaran |
    +----------+------------+------------+------+---------------+------------------+----------+------------+
    | 5        | alpa       | 2016-07-24 | 1603 |     45        |     12           | Ganjil   | 2027-2028  |
    | 6 	   | izin   	| 2016-07-24 | 1602 |     45 	    | 	  12  	       | Ganjil   | 2027-2028  |
    | 7 	   | hadir	| 2016-07-24 | 1603 |     45 	    |      4   	       | Genap    | 2027-2028  |
    | 8 	   | hadir	| 2016-07-24 | 1602 |     45 	    |      4           | Genap    | 2027-2028  |
    | 9 	   | alpa  	| 2016-07-31 | 1603 |     45 	    |     12           | Ganjil   | 2027-2028  |
    |10	   | izin  	| 2016-07-31 | 1602 |     45 	    |     12           | Ganjil   | 2027-2028  |
    |11	   | hadir      | 2016-08-06 | 1603 |     45 	    |     12           | Ganjil   | 2027-2028  |
    |12        | hadir      | 2016-08-06 | 1602 |     45 	    |     12           | Ganjil   | 2027-2028  |
    
    

    ini isi ada di tabel absen nya mas

    nah yang sya ingin ouput nya seperti ini mas

    +------------------+------------+------------------+------------+--------+------------+--------+------------+
    | idmata_pelajaran | nama_kelas | nama_mapel       | hadir      | izin   |sakit       |alpa    | nis
    +------------------+------------+------------------+------------+--------+------------+--------+------------+
    |  12              | X - 2      | Ekonomi          |      2     | 2      | 1          |    1   |1602
    |  4               | X - 2      | Bahasa Indonesia |      1     | 3      | 1	      |    2   |1602
    +------------------+------------+------------------+------------+--------+------------+--------+------------+
    
    • Iya mas, sudah benar pakai querynya, LIKE nya diubah menjadi sama dengan mas, untuk meningkatkan perfomance query

      SELECT idmata_pelajaran,
              COUNT(IF(keterangan = "hadir", keterangan, NULL)) AS hadir,
              COUNT(IF(keterangan = "izin", keterangan, NULL)) AS izin,
              COUNT(IF(keterangan = "sakit", keterangan, NULL)) AS sakit,
              COUNT(IF(keterangan = "alpa", keterangan, NULL)) AS alpa,
              nis
      FROM absen
      GROUP BY nis
  • mas gimana si cara pemasangan COUNT di php kok eror ya

    apakah kayak gini..?

    $ambil = mysql_query(“SELECT nis,
    COUNT(IF(keterangan LIKE “hadir%”, keterangan, NULL)) AS hadir,
    COUNT(IF(keterangan LIKE “izin%”, keterangan, NULL)) AS izin,
    COUNT(IF(keterangan Like “sakit%”, keterangan, NULL)) AS sakit,
    COUNT(IF(keterangan Like “alpa%”, keterangan, NULL)) AS alpa
    FROM absen where nis=’$nis’ GROUP BY nis”);

  • Assalamualaikum, mas bisa bikin laporan atau cetak bukti transaksi di crystal report ??

    saya juga mau minta bantuan untuk laporan menghitung jumlah barang yang terjual berdasarkan kode barang.

    +——————+————+——————+————+——–+————+——–+————+
    | kode_barang | nama_barang | status_pelanggan | satuan | harga | qty |Jumlah yang terjual
    +——————+————+——————+————+——–+———–

  • selamat sore mas mau nanya , saya punya data histori seperti ini:

    periode	Tahun	Aktual(Yt)	Forcast
    1	jan	 21,165,400 	 ` 
    2	feb	 19,087,350 	
    3	mar	 19,989,700 	
    4	apr	 20,340,000 	 20,080,817 
    5	may	 23,630,500 	 19,805,683 
    6	jun	 25,750,350 	 21,320,067 
    7	jul	 24,898,000 	 23,240,283 
    8	aug	 21,800,500 	 24,759,617 
    9	sep	 22,975,250 	 24,149,617 
    10	oct	 25,495,950 	 23,224,583 
    11	nov	 23,980,700 	 23,423,900 
    12	dec	 29,184,520 	 24,150,633 
    13	jan	 27,455,550 	 26,220,390 
    14	feb	 25,678,350 	 26,873,590 
    15	mar	 24,570,690 	 27,439,473 
    16	apr	 25,900,780 	 25,901,530 
    17	may		         25,383,273 
    TOTAL 			        335,973,456 
    

    Query untuk menghitung rata-rata pertiga bulan itu gmana ya mass misalkan untu forcast no 4 itu dihitung rata-rata dari bulan jan – mar dan itu juga berlaku untuk no 5 rata-rata dari bulan feb – apr.

    Mohon bantuannya mas soalnya saya agak kurang ngerti logikanya untuk saya implementasikan ke tugas program PHP saya,

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

      SELECT periode, tahun, aktual,
          (SELECT ROUND(SUM(aktual)/3)
           FROM akun 
           WHERE periode < a.periode
           AND periode > a.periode - 4) 
      AS forecast
      FROM akun a;

      Hasil:

      +---------+-------+----------+----------+
      | periode | tahun | aktual   | forecast |
      +---------+-------+----------+----------+
      |       1 | jan   | 21165400 |     NULL |
      |       2 | feb   | 19087350 |  7055133 |
      |       3 | mar   | 19989700 | 13417583 |
      |       4 | apr   | 20340000 | 20080817 |
      |       5 | may   | 23630500 | 19805683 |
      |       6 | jun   | 25750350 | 21320067 |
      |       7 | jul   | 24898000 | 23240283 |
      |       8 | aug   | 21800500 | 24759617 |
      |       9 | sep   | 22975250 | 24149617 |
      |      10 | oct   | 25495950 | 23224583 |
      |      11 | nov   | 23980700 | 23423900 |
      |      12 | dec   | 29184520 | 24150633 |
      |      13 | jan   | 27455550 | 26220390 |
      |      14 | feb   | 25678350 | 26873590 |
      |      15 | mar   | 24570690 | 27439473 |
      |      16 | apr   | 25900780 | 25901530 |
      |      17 | may   |        0 | 25383273 |
      +---------+-------+----------+----------+
      17 rows in set (0.00 sec)

      Itu gambaran awalnya mas, coba dikembangkan lagi ya mas

  • ka mau tanya saya mau mengitung jumlah yang status nya on pada tabel transaksi dimana no loket pada tabel tersebut seusai/ada pada tabel loket

    mohon bantuannya, terima kasih

  • mas minta tolong bantuanya yaaa.
    saya mau buat rekap laporan produksi barang berdasarkan id produksi

    table. detail transaksi
    no   | id_transaksi     | id_produksi | id_barang | qty     | harga  | subtotal |
    1    | tr_01            | prod_001    | brg001    |  2      | 2000   | 4000     |
    2    | tr_02            | Prod_001    | brg002    | 1       | 5000   | 5000     |
    3    | tr_03            | prod_002    | brg001    |  5      | 2000   | 10000    |
    4    | tr_04            | Prod_001    | brg002    | 3       | 5000   | 15000    |
    5    | tr_05            | prod_001    | brg001    |  4      | 2000   | 8000     |
    6    | tr_06            | Prod_002    | brg002    | 5       | 5000   | 25000    |
    7    | tr_07            | Prod_001    | brg003    | 1       | 9000   | 9000     |
    

    Output yang saya harapkan seprti ini . pengambilan data barang di ambil berdasarkan kode produksi

    no    | id_produksi | id_barang   | qty_total       | harga | subtotal |
    1     | prod_001    | brg001      |        6        | 2000  | 12000    |
    2     | Prod_001    | brg002      |        4        | 5000  | 20000    |
    3     | prod_001    | brg003      |        1        | 9000  | 9000     |
    

    Mohon Bantuanya ya mas…
    terima kasih banyak

    • Coba pakai query ini mas:

      SELECT id_produksi, id_barang, 
      		SUM(qty) AS qty_total, harga,
      		SUM(qty) * harga AS subtotal
      FROM detail_transaksi
      WHERE id_produksi = "prod_001"
      GROUP BY id_barang, id_produksi
      • Maaf mas agus kok stlah saya ubah kodingnya gak ada yg muncul datanya, gak ada peringatan error jga mas.

        • Oiya mas, maaf, memang kemarin belum saya coba, langsung menuliskan kode sql nya, sudah saya perbaiki mas, silakan dicoba lagi….

  • $id_produksi=$_GET[‘id_produksi’];
    $sql =”SELECT id_produksi, id_barang
    SUM(qty) AS qty_total, harga
    SUM(qty) * harga AS sub_total
    from detail_jual WHERE id_event=’$id_produksi’ GROUP BY id_barang, id_produksi”;
    $sql_ambil_item=mysql_query($sql);
    $num_rows=mysql_num_rows($sql_ambil_item);

    itu kodenya seperti itu yang saya buat. kok tetap gak muncul yaa datanya. maaf mas yah jadi banyak tanya

  • Iaa terima kasih mas yah……
    kodingnya berhasil.
    mas kalau saya mau menambhkan biar kode barangnya menjadi nama barang gmna mas >
    outputnya seperti ini

    Tbl. Barang

    no    | id_barang   | nm_barang| 
    1     | prod_001    | Besi     |       
    2     | Prod_001    | Kayu     |       
    3     | prod_001    | Karbon   |    
    

    Hasil Output.

    no    | id_produksi  | id_barang   | qty_total       | harga | subtotal |
    1     | prod_001     | Besi        |        6        | 2000  | 12000    |
    2     | Prod_001     | Kayu        |        4        | 5000  | 20000    |
    3     | prod_001     | Karbon      |        1        | 9000  | 9000     |
    

    Mohon bantuanya lagi yah mas agus. sebelumnya terima kasih atas bantuanya

    • Coba menggunakan join mas:

      SELECT id_produksi, id_barang, nm_barang,
      		SUM(qty) AS qty_total, harga,
      		SUM(qty) * harga AS subtotal
      FROM detail_transaksi
      LEFT JOIN barang USING(id_barang)
      WHERE id_produksi = "prod_001"
      GROUP BY id_barang, id_produksi
  • mass….mau tanya juga

    kalau saya punya tabel

    no.id     nilai        kelompok
    1111       100             b1
    1112        50             b1
    1113       100             b2
    1114       100             b2
    1115       150             b1
    

    saya ingin hasilnya

    kelompok b1 = 300
    kelompok b2 = 200

    bagaimana caa membuat scriptnya di php ?

    terima kasih atas bantuannya….salam kenal newbie baru seminggu ^_^

    • Coba pakai ini mbak:

      $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
      $sql  = 'SELECT kelompok, SUM(nilai) AS nilai
      		FROM tabel';
      		
      $query = mysqli_query($conn, $sql);
      
      if (!$query) {
      	die ('SQL Error: ' . mysqli_error($conn));
      }
      
      echo '<table>
      		<thead>
      			<tr>
      				<th>Kelompok</th>
      				<th>Nilai</th>
      			</tr>
      		</thead>
      		<tbody>';
      		
      while ($row = mysqli_fetch_assoc($query))
      {
      	echo '<tr>
      			<td>'.$row['kelompok'].'</td>
      			<td>'.$row['nilai'].'</td>
      		</tr>';
      }
      echo '
      	</tbody>
      </table>';

      Selengkapnya bisa dibaca disini: Cara Menampilkan Data Tabel Pada Database MySQL Dengan PHP

  • Siang mas..,
    saya mau tanya…
    saya lagi buat kuesioner pegawai pake php dan jawaban yang disimpan di tabel adalah sangat baik, baik, cukup dan kurang…,
    yang mau saya tanya cara buat menghitung data perpegawai misalkan yang sangat baik ada brapa, cukup berapa dan yg lain juga sama itu gimana..??? saya sudah coba kayak yang sudah coment di atas tapi datanya gak tampil mas….

    ini ada struktur tabel jawab kuesionernya…

    idjwb   |  idkaryawan   |   idkuesioner   |        jawaban          |
      1    		 1    	        1       	 Sangat Baik
      2    		 1    	        2       	 Baik
      3    		 1    	        3       	 Sangat Baik
      4    		 1    	        4       	 Cukup
      5    		 2    	        1       	 Sangat Baik
      6    		 2    	        2       	 Baik
      7    		 2    	        3                Baik
      8    		 2    	        4       	 Sangat Baik
    
      • Ok.., terima kasih mas.., sudah jadi….
        maaf mas saya mau tanya lagi ni…
        saya lagi buat laporan karyawan pake php…
        strukturnya gini
        pertama pilih nama karyawan kemudian pilih tahun akademik baru di klik tombol submit untuk membuat laporannya….
        kira kira untuk script sqlnya gimana..????
        Tabelnya kayak gini mas…

        idjwb   |  idkaryawan   |   idkuesioner   |        jawaban          |    idta     |
          1    		 1    	        1       	 Sangat Baik            1
          2    		 1    	        2       	 Baik                   1
          3    		 1    	        3       	 Sangat Baik            1
          4    		 1    	        4       	 Cukup                  1
          5    		 2    	        1       	 Sangat Baik            2
          6    		 2    	        2       	 Baik                   2
          7    		 2    	        3                Baik                   2
          8    		 2    	        4       	 Sangat Baik            2
        

        Struktur tabel Tahun akademik:

        |    idta     |             Ta             |       Semester         |
                1             2015/2016                   Genap
                2             2015/2016                   Ganjil
        
  • mas minta tolong bantuanya ya.
    *tbl barang_masuk

    no    | id_masuk       |tgl_masuk            |id_supplier     |
    1     | ord_01         | 01-1-2016           | sup_01         |
    2     | ord_02         | 02-1-2016           | sup_02         |
    3     | ord_03         | 03-1-2016           | sup_01         |
    

    *tbl detail_barang_masuk

    no    | id_masuk         |id_barang                |jml_masuk      |
    1     | ord_01           | brg_01                  | 3             |
    2     | ord_01           | brg_02                  | 1             |
    3     | ord_01           | brg_03                  | 2             |
    4     | ord_02           | brg_01                  | 5             |
    5     | ord_02           | brg_03                  | 5             |
    6     | ord_03           | brg_02                  | 2             |
    7     | ord_03           | brg_03                  | 5             |
    8     | ord_03           | brg_01                  | 2             |
    

    *tbl_barang

    no    | id_brg           |id_barang             |nm_barang      |
    1     | ord_01           | brg_01               |baju           |
    2     | ord_01           | brg_02               |celana         |
    3     | ord_01           | brg_03               |sepatu         |
    

    “jika saya melakukan rekap hanya dari tangal 01-1-2016 s/d 02-1-2016”
    # tampilan yang saya harapkan seperti ini mas #

    no    |nm_barang             |total_masuk   |
    1     | baju                 | 8            |
    2     | celana               | 1            | 
    3     | sepatu               | 7            |
    

    minta tolong bantuanya ya mas agus.
    terima kasih banyak

    • 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 * FROM `detail_barang_masuk`
      LEFT JOIN barang_masuk USING(id_masuk)
      WHERE	STR_TO_DATE(tgl_masuk, '%d-%m-%Y') > "2016-01-00" 
      	AND STR_TO_DATE(tgl_masuk, '%d-%m-%Y') < "2016-01-03"

      Hasilnya:

      +----------+-----------+-----------+-----------+-------------+
      | id_masuk | id_barang | jml_masuk | tgl_masuk | id_supplier |
      +----------+-----------+-----------+-----------+-------------+
      | ord_01   | brg_01    | 3         | 01-1-2016 | sup_01      |
      | ord_01   | brg_02    | 1         | 01-1-2016 | sup_01      |
      | ord_01   | brg_03    | 2         | 01-1-2016 | sup_01      |
      | ord_02   | brg_01    | 5         | 02-1-2016 | sup_02      |
      | ord_02   | brg_03    | 5         | 02-1-2016 | sup_02      |
      +----------+-----------+-----------+-----------+-------------+

      Selanjutnya hitung jumlah barang masuk:

      SELECT nm_barang, SUM(jml_masuk) AS total_masuk
      FROM
      (
          SELECT * FROM `detail_barang_masuk`
          LEFT JOIN barang_masuk USING(id_masuk)
          WHERE STR_TO_DATE(tgl_masuk, '%d-%m-%Y') > "2016-01-00" AND STR_TO_DATE(tgl_masuk, '%d-%m-%Y') < "2016-01-03"
      ) AS detail_barang
      LEFT JOIN tbl_barang USING(id_barang)
      GROUP BY id_barang

      Hasil:

      +-----------+-------------+
      | nm_barang | total_masuk |
      +-----------+-------------+
      | baju      |           8 |
      | celana    |           1 |
      | sepatu    |           7 |
      +-----------+-------------+
  • outputnya kyak gini mas…

    Nama Karyawan : Diambil dari tbl karyawan

    Tahun akademik : diambil dari tbl tahun akademik…

    Semester : diambil dari tbl tahun akademik..

    dan output di tabel kayak gini….

    | Pertanyaan | Jawab |
    | …………………………………………………………………………………………………….. | ……………………….. |
    | ……………………………………………………………………………………………………. | ………………………… |

    dan outputnya di sortir berdasarkan nama karyawan dan tahun akademik yang dipilih di combobox nama karyawan dan combo tahun akademik.., saat klik tombol submit langsung datanya di tampilkan…….

    • Coba seperti ini mas:

      $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
      
      // Nama Karyawan
      $sql =  'SELECT * FROM tabel_karyawan WHERE id_karyawan = ' . $_POST['id_karyawan'];
      $query = mysqli_query($conn, $sql);
      $row = mysqli_fetch_all($query);
      
      echo 'Nama Karyawan : ' . $row['nama_karyawan'];
      
      // Tahun Akademik
      
      $sql =  'SELECT * FROM tabel_ta WHERE idta = ' . $_POST['idta'];
      $query = mysqli_query($conn, $sql);
      $row = mysqli_fetch_all($query);
      
      echo 'Tahun Akademik : ' . $row['ta'];
      
      //  Quesioner
      $sql = 'SELECT * FROM tabel_quesioner
      		LEFT JOIN tabel_ta USING (idta)
      		WHERE id_karyawan = ' . $_POST['id_karyawan'] . ' AND idta = ' $_POST['idta'];
      
      $query = mysqli_query($conn, $sql);
      
      while ($row = mysqli_fetch_assoc($query))
      {
      	echo 'Pertanyaan: ' . $row['pertanyaan'] . ' Jawaban: ' . $row['jawaban'];
      }
  • Mohon bantuannya bang. Saya mau mencari selisih antara jam start pada field kedua dengan jam end pada field pertama. kondisi yang saya inginkan Jika start field 2 lebih kecil dari end field 1 maka hasilnya 0, kalau lebih besar akan terkurang. begitu seterusnya dengan field berikutnya.

    no      | start            |end              |
    1       | 08:23:10         | 08:25:15        |
    2       | 08:23:12         | 08:25:20        |
    3       | 08:27:15         | 08:29:10        |
    • Maksudnya seperti apa ya mas? start field 2 maksudnya row 2? start end field 1 maksudnya row 1?
      Bisa coba dicontohkan dengan output tabel yang diinginkan

      • iya bang. maaf, maksudnya row 2 start di kurang row 1 end. output yang sy harapkan seperti ini

        no | start |end |selisih
        1 | 08:23:10 | 08:25:15 |00:00:00
        2 | 08:23:12 | 08:25:10 |00:02:05
        3 | 08:27:15 | 08:29:10 |00:01:10
        4 | 08:30:20 | 08:29:10 |00:00:00

        selisih untuk row pertama hasil dari 08:23:12 kurang 08:25:15. karena hasilnya minus maka diset 0
        selisih untuk row kedua hasil dari 08:27:15 kurang 08:25:10 hasilnya 00:02:05

        • Dengan asumsi filednya:
          id | start | end

          coba pakai query ini mas:

          
          SELECT id, start, end, IF(TIME_TO_SEC(selisih) > 0, selisih, 0) AS selisih
          FROM
          (
              SELECT id, start, end,
                  TIMEDIFF( (SELECT start 
                  FROM tabel WHERE id = c.id + 1
                  ), end) AS selisih
              FROM tabel AS c
          ) as tabel
          

          Hasilnya:

          +----+----------+----------+----------+
          | id | start    | end      | selisih  |
          +----+----------+----------+----------+
          |  1 | 08:23:10 | 08:25:15 | 0        |
          |  2 | 08:23:12 | 08:25:20 | 00:01:55 |
          |  3 | 08:27:15 | 08:29:10 | 00:01:10 |
          |  4 | 08:30:20 | 08:29:10 | 0        |
          +----+----------+----------+----------+
  • terima kasih bang. saya sudah coba query nya dan berhasil. Tapi bagaimana cara untuk menjumlah waktu selisih nya yah bang. output yang saya mau tampilkan jumlah selisih sesuai query di atas ?

  • bagaimana cara mencari sub total dengan cara tarif dikalikan air time maka sub total akan menghitung secara otomatis
    |tarif| |air_time| |sub_total|

  • bang boleh ikut tanya
    tp maaf kalo beda temanya
    misal saya punya tabel transaksi dengan isi

    +------------+----------+----------+
    | kd_tran    | id_pel   | hutang   |
    +------------+----------+----------+
    |      1     |      1   | 10000    |
    +------------+----------+----------+
    |      2     |      1   | 15000    |
    +------------+----------+----------+

    nah biar bisa nge update tabel tersebut kalo pembayaran 20000
    bagaimana ya bang biar nanti hasil dari tabel nya jadi

    +------------+----------+----------+
    | kd_tran    | id_pel   | hutang   |
    +------------+----------+----------+
    |      1     |      1   |   0      |
    +------------+----------+----------+
    |      2     |      1   | 5000     |
    +------------+----------+----------+

    terimakasih mohon bantuannya ya bang

        • Sebelumnya, saya tambahkan field id_trans agar setiap row uniq, sehingga tabelnya:

          +----------+----------+--------+--------+
          | id_trans | kd_trans | id_pel | hutang |
          +----------+----------+--------+--------+
          |        1 |        1 |      1 |      0 |
          |        2 |        2 |      1 |   5000 |
          +----------+----------+--------+--------+

          Querynya:

          $con = @mysqli_connect('localhost', 'root', '', 'database');
          
          if (!$con) {
              echo "Error: " . mysqli_connect_error();
          	exit();
          }
          
          $sql 	= 'SELECT * FROM tb_trans';
          $query 	= mysqli_query($con, $sql);
          $bayar	= 20000;
          
          while ($row = mysqli_fetch_array($query))
          {
          	// Jika saldo bayar  = 0, hentikan
          	if ($bayar == 0)
          		break;
          	
          	// Sisa nilai pada field hutng
          	$saldo = $row['hutang'] < $bayar ? 0 : $row['hutang'] - $bayar;
          	$sql = 'UPDATE tb_trans SET hutang = ' . $saldo . ' WHERE id_trans = ' . $row['id_trans'];
          	mysqli_query($con, $sql);
          	$bayar = $bayar - $row['hutang'];
          }
  • mas saya, permisi saya mau tanya cara megabungkan isi field menjadi satu baris dat itu gimana ya ?
    data pembelian kayak gini:

    kd_brg       |hrg_beli           |total_masuk   |
    002          |5000               | 15000        |
    002          |8000               | 15000        | 
    002          |10000              | 15000        |
    

    agar menjadi kayak gini gimana mas?

    kd_brg       |hrg_beli                       |total_masuk   |
    002          |5000,8000,10000                | 15000        |
    
    • Coba menggunakan GROUP_CONCAT mas:

      SELECT kd_brg, GROUP_CONCAT(hrg_beli SEPARATOR ', ') AS hrg_beli, total_masuk
      FROM group_concat
      WHERE kd_brg = "002"
      GROUP BY kd_brg

      Hasil:

      +--------+-------------------+-------------+
      | kd_brg | hrg_beli          | total_masuk |
      +--------+-------------------+-------------+
      | 002    | 5000, 8000, 10000 |       15000 |
      +--------+-------------------+-------------+
  • salam mas agus mau bertanya saya punya data contoh seperti ini :

    contoh ini bulan september :

    
    deskrip        |                curent month                  |                  last month                  |               YTD        |
    
                   |    idr          |         % of sales         |     idr          |         % of sales        |    idr     | % of sales  |
    
    laba kotor     |    34           |                12%         |      23          |              67%          |    34      |      67%    |
    laba bersih    |    34           |                12%         |      23          |              67%          |    34      |      67%    |
    

    *nb : untuk mendapatkan idr YTD diambil dari laba kotor current month ditambah laba kotor idr YTD bulan sebelumnya menghasilkan idr bulan selanjutnya.. nah kira kira querynya seperti apa yah mas?

    terima kasih..

    • Saya belum paham yang idr YTD mas, untuk yang angka 34 di laba kotor dan 34 di laba bersih datanya dapat dari mana ya mas?
      Datanya sudah tersedia di situ semua?

      • untuk laba kotor dan laba bersih itu penginputan manual, belum di rumuskan, sebagai contoh di manualkan penginputan laba kotor dan laba bersihnya tuh kira kira bagaimana mas?
        iya datanya sudah tersedia di situ semua mas..

        terima kasih..

  • bagaimana menampilan persentase rata2 di setiap bulan berdasarkan masing skpa ini query yg sudah saya buat :

    SELECT tb_skpa.skpa_id,tb_skpa.skpa_kode,tb_skpa.skpa_nama,pagu_skpa,
    
    ....
    
    group by tb_skpa.skpa_id HAVING tb_skpa.skpa_id
    
  • mas saya mau tanya, kalau untuk menampilkan nilai rata-rata, dari nilai maksimum dan minimum siswa gmna ya mas?
    itu untuk 2 tabel

  • mas saya mau nanya..
    saya mau menampilkan data dari data base…

    tapi id_kunci di satu tabel leih dari 1, dan ingin di satukan kolom.a….
    gimana ya cara.a…? sedangkan datanya berbeda2…

    kira2 adakah solusi ?

    • Coba query ini mas:

      SELECT jenis_spesialisasi,
      		SUM(IF(rujukan = "Dari puskesmas", 1, 0)) AS "Dari Puskesmas",
      		SUM(IF(rujukan = "dikembalikan ke puskesmas", 1, 0)) AS "Dikembalikan ke Puskesmas",
      		SUM(IF(dirujuk = "rujukan", 1, 0)) AS "Rujukan",
      		SUM(IF(dirujuk = "Datang Sendiri", 1, 0)) AS "Datang Sendiri"
      FROM tabel GROUP BY jenis_spesialisasi

      Querynya untuk MySQL coba disesuaikan di SQL Server, inti logikanya sama

      Sedikit saran, pada data yang isinya berulang (umumnya data series), untuk konsistensi data, jika memungkinkan sebaiknya nilai field diubah menjadi kode, seperti field jenis_spesialisasi

      Sama field tanggal sebisa mungkin menggunakan format yyyy-mm-dd (format standar sql), untuk meminimalisir konversi format tanggal ketika melakukan perbandingan, misal mengambil data bulan 10 saja

        • saya mau tanya lagi, kalo saya mau mencari data yang sering di pilih pada file deskripsi berdasarkan jenis kelamin yang memilih bagai mana querynya?
          terimakasih..

          TABEL

          	
          Nama	Deskripsi	Jenis Kelamin
          A	    Enak	   L
          B	    Tidak Enak	   L
          C	    Tidak Enak	   P
          D	    Enak	   P
          E	    Tidak Enak	   L
          		
          HASIL		
          	           Jenis Kelamin	
          Deskripsi	       L	P
          Enak	               1	1
          Tidak Enak	       2	1
          
          • Coba query ini mas:

            SELECT deskripsi, 
            	COUNT(IF(jenis_kelamin = "L", 1, NULL) AS L,
            	COUNT(IF(jenis_kelamin = "P", 1, NULL) AS P
            FROM tabel
            GROUP BY deskripsi
  • Pagi Mas Agus,

    Mohon bantuannya dunk, saya sudah buat tabel ‘package_tracker’ dengan isi tabel sbb:

    order_number  | package_number | delivery_hub  | tgl_terima |  tgl_kirim  | status
    123456789     | 123456789-0123 | JKT SLT       | 2016-08-04 |  2016-08-06 | Delivered
    234567890     | 234567890-0113 | JKT BRT       | 2016-08-03 |  2016-08-05 | Failed*Cust Not Address
    345678901     | 345678901-0122 | JKT UTR       | 2016-08-03 |  2016-08-06 | Cancel*Refused Not Pay
    456789012     | 456789012-1231 | JKT SLT       | 2016-08-04 |  2016-08-05 | Failed*Cust Postphone
    567890123     | 567890123-0133 | JKT UTR       | 2016-08-03 |  2016-08-05 | In Progress
    678901234     | 678901234-0134 | JKT BRT       | 2016-08-06 |  2016-08-08 | Delivered
    789012345     | 789012345-0134 | JKT SLT       | 2016-08-06 |             | Waiting for delivery
    dan yg ingin saya tanyakan gimana menampilkan data delivery_hub
    

    JKT SLT ||total jumlah paket (Failed, waiting for delivery)

    makasih ya mas.

    • Coba pakai ini mas:

      SELECT delivery_hub AS Hub, 
      	COUNT(package_number) Total,
      	COUNT(
              CASE WHEN status LIKE "Failed%"
      		THEN status
              ELSE NULL
              END
            ) AS Failed,
      	COUNT(
              CASE WHEN status LIKE "Waiting%"
      		THEN status
              ELSE NULL
              END
            ) AS Waiting
      FROM package_tracker 
      GROUP BY delivery_hub

      Hasil:

      +---------+-------+--------+---------+
      | Hub     | Total | Failed | Waiting |
      +---------+-------+--------+---------+
      | JKT BRT |     2 |      1 |       0 |
      | JKT SLT |     3 |      1 |       1 |
      | JKT UTR |     2 |      0 |       0 |
      +---------+-------+--------+---------+
  • selamat siang,
    mohon bantuan rekan2, saya punya tabel yang hasil dari mesin absen

    tabel mesin absen

    | nama | tanggal   | jam
    | doni |2016-10-06 | 08:00:00
    | doni |2016-10-06 | 08:05:00
    | doni |2016-10-06 | 17:00:05
    | doni |2016-10-06 | 19:00:05
    

    saya ingin tanya bagaimana menampilkan data dan di simpan dalam tabel
    tabel absen

    | nama | tanggal | masuk | keluar
    | doni |2016-10-06 | 08:00:00 | 19:00:05
    

    terima kasih
    sukses buat rekan2 semua

    • Coba pakai query ini mas:

      SELECT nama, tanggal, MIN(jam) AS Masuk, MAX(jam) AS keluar
      FROM kehadiran
      GROUP BY nama

      Hasil:

      +------+------------+----------+----------+
      | nama | tanggal    | masuk    | keluar   |
      +------+------------+----------+----------+
      | doni | 2016-10-06 | 08:00:00 | 19:00:05 |
      +------+------------+----------+----------+

      Untuk memasukkannya ke tabel absen tinggal disesuaikan saja mas.
      Sedikit saran, untuk menjaga integritas data, sebaiknya ditambah kolom ID untuk nama bisa NIP, NIK, atai NIS, nantinya querynya di group berdasarkan ID nama tersebut

        • selamat sore mas,

          Data nya berhasil saya tampilkan,
          ngimana kalau hasilnya langsung tersimpan ke tabel_rekapabsensi tapi tidak terjadi pendobelan data yang masuk

          tabel_rekapabsensi

          +------+------------+----------+----------+
          | nama | tanggal    | masuk    | keluar   |
          +------+------------+----------+----------+
          | doni | 2016-10-06 | 08:00:00 | 19:00:05 |
          +------+------------+----------+----------+
          

          terima kasih

          • selamat malam mas,
            mohon bantuannya ngimana saya menampilkan pada tabel

            | id      | tanggal   | masuk       | terlambat1 |terlambat2 | terlambat 3 | terlambat | selisih
            | 2016756 |2016-10-06 | 08:01:00    | 1          |0          | 0           | 1         | 00:01:00
            | 2016757 |2016-10-06 | 08:01:59    | 1          |0          | 0           | 1         | 00:01:59
            | 2016758 |2016-10-06 | 08:02:00    | 0          |1          | 0           | 1         | 00:02:00
            | 2016759 |2016-10-06 | 08:03:00    | 0          |0          | 1           | 1         | 00:03:00
            | 2016760 |2016-10-06 | 08:07:00    | 0          |0          | 1           | 1         | 00:07:00
            | 2016761 |2016-10-06 | 08:00:59    | 0          |0          | 0           | 0         | 00:00:59
            

            kriteria spt ini :
            terlambat 1 = >=08:01:00 – 08:01:59
            terlambat 2 = >=08:02:00 – 08:02:59
            terlambat 3 = >=08:03:00

            saya hanya berhasil menampilkan selisih untuk terlambat belum bisa di tampilan,
            $jammasuk = “08:00:00”;
            mysql_query(“SELECT id, tanggal, masuk, keluar, (TIMEDIFF(‘$jammasuk, masuk)) as selisih
            FROM absen”)

            terima kasih atas bantuannya

          • Coba query ini mas:

            SELECT id, tanggal, masuk,
            	CASE WHEN masuk >= "08:01:00" AND masuk <= "08:01:59"
            		THEN 1
            		ELSE 0 
            	END AS "Terlambat-1",
            	CASE WHEN masuk >= "08:02:00" AND masuk <= "08:02:59"
            		THEN 1
            		ELSE 0 
            	END AS "Terlambat-2",
            	CASE WHEN masuk >= "08:03:00"
            		THEN 1
            		ELSE 0 
            	END AS "Terlambat-3",
            	TIMEDIFF(masuk, "08:00:00") AS selisih
            FROM absen 
            ORDER BY id

            Hasil

            +---------+------------+----------+-------------+-------------+-------------+----------+
            | id      | tanggal    | masuk    | Terlambat-1 | Terlambat-2 | Terlambat-3 | selisih  |
            +---------+------------+----------+-------------+-------------+-------------+----------+
            | 2016756 | 2016-10-06 | 08:01:00 |           1 |           0 |           0 | 00:01:00 |
            | 2016757 | 2016-10-06 | 08:01:59 |           1 |           0 |           0 | 00:01:59 |
            | 2016758 | 2016-10-06 | 08:02:00 |           0 |           1 |           0 | 00:02:00 |
            | 2016759 | 2016-10-06 | 08:03:00 |           0 |           0 |           1 | 00:03:00 |
            | 2016760 | 2016-10-06 | 08:07:00 |           0 |           0 |           1 | 00:07:00 |
            | 2016761 | 2016-10-06 | 08:00:59 |           0 |           0 |           0 | 00:00:59 |
            +---------+------------+----------+-------------+-------------+-------------+----------+
  • Selamat malam, Mas.
    Saya mau bertanya. Jika saya memiliki data seperti ini

    ---------------------------------------------------------
    | id_anggota   | no_trans                  | nama       |
    ---------------------------------------------------------
    | 123          | 12                        | A          |
    ---------------------------------------------------------
    | 234          | 13                        | B          |
    ---------------------------------------------------------
    | 345          | 13                        | C          |
    ---------------------------------------------------------
    | 456          | 13                        | D          |
    ---------------------------------------------------------
    

    Saya hanya ingin menampilkan semua data, dimana no_trans datanya lebih dari 2 (dalam kasus ini yg 13 saja)
    Saya mencoba seperti ini Select id_anggota, no_trans, count(*) from table group by id_anggota, no_trans. Kalau saya coba memakai having count(*) > 2 hasilnya kosong.
    Mohon bantuannya Mas, terimakasih

    Output yang diharapkan :

    --------------------------------------------
    | id_anggota   | no_trans                  |
    --------------------------------------------
    | 234          | 13                        |
    --------------------------------------------
    | 345          | 13                        |
    --------------------------------------------
    | 456           | 13                       |
    --------------------------------------------
    
    • Querynya menghasilkan nilai kosong karena memang hasil count nya cuman 1 mbak, ketika dijalankan querynya

      Select id_anggota, no_trans, count(*) 
      from table 
      group by id_anggota, no_trans

      Hasilnya:

      +------------+----------+----------+
      | id_anggota | no_trans | count(*) |
      +------------+----------+----------+
      | 123        | 12       |        1 |
      | 234        | 13       |        1 |
      | 345        | 13       |        1 |
      | 456        | 13       |        1 |
      | 789        | 12       |        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

      SELECT no_trans
      FROM trans 
      GROUP BY no_trans 
      HAVING count(*) > 2

      Hasil:

      +----------+
      | no_trans |
      +----------+
      | 13       |
      +----------+

      Kedua: kita cari data yang no_transnya hasil dari query diatas

      SELECT id_anggota, no_trans 
      FROM trans 
      WHERE no_trans IN (SELECT no_trans
                         FROM trans 
                         GROUP BY no_trans 
                         HAVING count(*) > 2
                       )

      Hasil:

      +------------+----------+
      | id_anggota | no_trans |
      +------------+----------+
      | 234        | 13       |
      | 345        | 13       |
      | 456        | 13       |
      +------------+----------+
      • Terimakasih banyak, Mas atas bantuannya. Saya juga awalnya berpikir ini ada 2 langkah, dan memasukkan select lagi pada from atau menggunakan kondisi where kemudian di count, tp masih gagal hehe. Alhamdulillah dapat ilmu baru. Terimakasih banyak, Mas..

  • malam mas saya punya kasus, dalam 2 tabel ada :

    TABEL 1

    | id_barang | harga_barang |
    |   1       | 5000 |
    |   2       | 3000 |
    |   3       | 7000 |
    

    TABEL 2

    | id_penjualan | id_barang | penjualan | total_bayar |
    | 1            | 1         | 3         | ?           |
    | 2            | 2         | 4         | ?           |
    | 3            | 3         | 5         | ?           |
    

    Untuk menghitung total_bayar = harga barang * penjualan lalu hasilnya dimasukkan ke dalam field total_bayar di TABEL 2
    yang membingungkan saya menghitung total_bayar lalu dimasukkkan ke field lagi ,mas soalnya saya sudah memakai inner joint mas…

    • Tingga di query saja mas hasil yang diinginkan kemudian di masukkan ke dalam tabel 2:
      Coba query berikut:

      UPDATE tabel_2 
      	SET total_bayar = (
          		SELECT harga_barang * tabel_2.penjualan 
             		FROM tabel_1 
              	WHERE id_barang = tabel_2.id_barang
         	);

      Hasil:

      +--------------+-----------+-----------+-------------+
      | id_penjualan | id_barang | penjualan | total_bayar |
      +--------------+-----------+-----------+-------------+
      |            1 |         1 |         3 |       15000 |
      |            2 |         2 |         4 |       12000 |
      |            3 |         3 |         5 |       35000 |
      +--------------+-----------+-----------+-------------+
  • Saya ingin bertanya, jika ingin dibuat rekap data, lalu query COUNT tidak dapat digunakan karena ambigu, bagaimana caranya ya?
    Kasusnya begini, seorang pegawai dapat melihat rekap data presensi satu unit kerjanya, dimana di dalam data presensi terdapat banyak keterangan seperti terlambat kerja dan terlambat doa, dan tabel dimunculkan dengan menghitung nip_mesin yang bekerja, tolong dibantu. Terima kasih

    • Ambigu bisanya terjadi karena kita menggabungkan beberapa tabel dan diantara tabel tersebut ada kolom yang namanya sama, sehingga mysql tidak tahu kolom mana yang akan digunakan, sehingga kita harus mendefinisikan nama tabel, misal: SELECT tabel_a.kolom_a, tabel_b.kolom_a, jika kita tulis SELECT tabel_a, maka MySQL akan bingun, field kolom_a diambil dari tabel_a atau tabel_b

      Bisa minta tolong contoh data tabel dan output yang diinginkan mbak?

      • tabel presensi

        +----------------+-----------------+-------------+----------------+
        | nip_mesin      | tanggal         |   jenis_ijin|   unit_kerja   |
        +----------------+-----------------+-------------+----------------+
        | 123            | 2016-10-02      |        10   |     Finance    |
        | 999            | 2016-10-20      |        11   |       SDM      |
        | 345            | 2016-10-12      |        12   |     Finance    |
        | 123            | 2016-10-15      |        11   |     Finance    |
        | 999            | 2016-10-05      |        12   |        SDM     |
        +----------------+-----------------+-------------+----------------+
        

        output yang diinginkan, nip_peg = 123 hanya ditampilkan data yang satu unit kerja

        +----------------+--------------------+
        | nip_mesin      |    jenis_ijin      |
        |                |  10  | 11   | 12   |   
        +----------------+--------------------+
        | 123            |  1   |  1   | 0    |
        | 345            |  0   |  0   | 1    |
        +----------------+--------------------+
        

        kurang lebih seperti itu. mohon bantuannya. Terima kasih banyak

        • Itu jenis ijin nya hanya 10, 11, 12 atau ada yang lain? jika jumlahnya tetap bisa menggunakan query ini:

          SELECT nip_mesin,
          		SUM(IF(jenis_ijin = 10,1,0)) AS "10",
          		SUM(IF(jenis_ijin = 11,1,0)) AS "11",
          		SUM(IF(jenis_ijin = 12,1,0)) AS "12"
          FROM tb_absen
          GROUP BY nip_mesin

          Jika isi dari jenis ijin berubah ubah untuk melakukan pivot kita perlu menempuh beberapa langkah

  • selamat pagi mas,

    mohon bantuanya :
    Saya punya 4 buah tabel

    Tabel Hadir
    NIP	 TANGAL	        KET     STATUS
    3451	2016-10-15	SAKIT	HADIR
    3452	2016-10-16	SAKIT	HADIR
    3453	2016-10-17	SAKIT	TIDAK HADIR
    3454	2016-10-18	SAKIT	HADIR
    3455	2016-10-19	SAKIT	HADIR
    3456	2016-10-20	SAKIT	HADIR
    3457	2016-10-21	IJIN	HADIR
    
    
    Tabel Hari Libur			
    ID	TANGAL	          KET
    1	2016-10-11	LIBUR HARI RAYA
    2	2016-10-12	LIBUR CUTI BERSAMA
    3	2016-10-16	SABTU
    4	2016-10-17	MINGGU
    
    
    Tabel Mesin Absen			
    NIP	   TANGGAL	MASUK	        KELUAR
    3451	2016-09-29	08:04:07	22:38:19
    3452	2016-09-26	07:45:09	07:45:09
    3453	2016-09-23	23:14:52	23:14:52
    3454	2016-09-22	07:59:02	07:59:02
    3455	2016-09-21	23:14:18	23:14:18
    3454	2016-10-20	07:56:03	19:56:25
    3457	2016-10-19	07:56:35	19:56:25
    
    Tabel Cuti		
    NIP     MULAI CUTI	SELESAI CUTI
    3451	2016-09-03	2016-09-05
    3452	2016-09-04	2016-09-06
    3453	2016-09-05	2016-09-07
    3454	2016-09-06	2016-09-08
    3455	2016-09-07	2016-09-09
    3454	2016-09-10	2016-09-12
    3457	2016-09-11	2016-09-13
    

    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

  • Selamat sore mas.
    saya mau bertanya. saya mau mencari query menghitung jumlah baris(nomor) berdasarkan kriteria.
    namatabel: tb_admin

    nomor(p) Nama status
    1      Saya   Merah          
    2      Anda   Putih
    3      Situ   Putih
    4      Kamu   Merah
    5      Kita   Merah
    6      Aku    Putih
    7      Dia    Merah
    8      Mereka Putih
    9      Kalian Putih
    10     Beliau Merah
    11     Daku   Merah
    12     Dikau  Putih
    

    saya mau menghitung berapa jumlah merah dan totalnya gan.
    query saya seperti ini, tapi belum muncul juga

    $sql = "SELECT status, COUNT ( nomor ) AS jumlah FROM `tb_admin` GROUP BY status"; 
    $query=(mysqli_query($sql));
    while($row=mysqli_fetch_array($query))
    {
      echo $row['status'] = $row['jumlah']; 
    }
    
    Ga ada yang ditampilkan gan. Mohon bantuanya.... Terimakasih
    • Sudah betul mas querynya hanya saja untuk menulis fungsi tidak boleh ada spasi:

      SELECT status, COUNT(nomor) AS jumlah FROM `tb_admin` GROUP BY status

      Untuk PHP nya tanda sama dengannya dibuat string menggunakan tanda kutip:

      $query=(mysqli_query($sql));
      while($row=mysqli_fetch_array($query))
      {
      	echo $row['status'] . ' = ' . $row['jumlah']; 
      }
  • Mas, mohon pencerahannya lagi

    *----*-------------*-------------*-------------*-----------*--------------*------------*
    | No | Nama        | aksi1       | aksi2       | aksi3      |aksi4        | aksi5      |
    ========================================================================================
    | 1  | Saya        | Berhasil    | Berhasil    | Berhasil   | gagal       |            |
    | 2  | Anda        | Berhasil    | Berhasil    | Gagal      |             |            |
    | 3  | Kita        | Berhasil    | Berhasil    | Berhasil   | Berhasil    |Berhasil    |
    | 4  | Aku         | Berhasil    | Berhasil    | Gagal      | Gagal       |            |      
    | 5  | Kamu        | Berhasil    | Berhasil    | Berhasil   | Berhasil    |            |
    | 6  | Kami        | Gagal       | Gagal       |            |             |            |
    | 7  | Mereka      | Gagal       | Gagal       | Gagal      |             |            |
    | 8  | Dia         | Berhasil    | Gagal       | Gagal      | Gagal       | Gagal      |
    | 9  | Anda        | Berhasil    | Berhasil    | Berhasil   | Berhasil    | Berhasil   |
    |10  | Kalian      | Gagal       |             |            |             |            |
    |11  | Beliau      | Gagal       | Gagal       | Gagal      |             |            |
    ========================================================================================
    

    Mencari Query berapa banyak Gagal?

    $sql = "SELECT aksi1,
    		aksi2,
    		aksi3,
    		aksi4,
    		aksi5, COUNT ( No ) AS jumlah FROM `namatabel` GROUP BY Gagal"; 
    $query=(mysqli_query($sql));
    while($row=mysqli_fetch_array($query))
    {
      echo $row['Gagal'] = $row['jumlah']; 
    }
    

    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.

    • Coba pakai query ini mas:

      SELECT		nama, aksi1, aksi2, aksi3, aksi4, aksi5,
      
      		IF(aksi1 = 'Gagal', 1, 0) + 
      		IF(aksi2 = 'Gagal', 1, 0) + 
      		IF(aksi3 = 'Gagal', 1, 0) + 
      		IF(aksi4 = 'Gagal', 1, 0) + 
      		IF(aksi5 = 'Gagal', 1, 0) AS total_gagal,
      		
      		IF(aksi1 = 'Berhasil', 1, 0) + 
      		IF(aksi2 = 'Berhasil', 1, 0) + 
      		IF(aksi3 = 'Berhasil', 1, 0) + 
      		IF(aksi4 = 'Berhasil', 1, 0) + 
      		IF(aksi5 != '', 1, 0) AS total_berhasil,
      		
      		IF(aksi1 != '', 1, 0) + 
      		IF(aksi2 != '', 1, 0) + 
      		IF(aksi3 != '', 1, 0) + 
      		IF(aksi4 != '', 1, 0) AS total
      FROM namatabel

      Hasil:

      +--------+----------+----------+----------+----------+----------+-------------+----------------+-------+
      | nama   | aksi1    | aksi2    | aksi3    | aksi4    | aksi5    | total_gagal | total_berhasil | total |
      +--------+----------+----------+----------+----------+----------+-------------+----------------+-------+
      | Saya   | Berhasil | Berhasil | Berhasil | gagal    |          |           1 |              3 |     4 |
      | Anda   | Berhasil | Berhasil | Gagal    |          |          |           1 |              2 |     3 |
      | Kita   | Berhasil | Berhasil | Berhasil | Berhasil | Berhasil |           0 |              5 |     4 |
      | Aku    | Berhasil | Berhasil | Gagal    | Gagal    |          |           2 |              2 |     4 |
      | Kamu   | Berhasil | Berhasil | Berhasil | Berhasil |          |           0 |              4 |     4 |
      | Kami   | Gagal    | Gagal    |          |          |          |           2 |              0 |     2 |
      | Mereka | Gagal    | Gagal    | Gagal    |          |          |           3 |              0 |     3 |
      | Dia    | Berhasil | Gagal    | Gagal    | Gagal    | Gagal    |           4 |              2 |     4 |
      | Anda   | Berhasil | Berhasil | Berhasil | Berhasil | Berhasil |           0 |              5 |     4 |
      | Kalian | Gagal    |          |          |          |          |           1 |              0 |     1 |
      | Beliau | Gagal    | Gagal    | Gagal    |          |          |           3 |              0 |     3 |
      +--------+----------+----------+----------+----------+----------+-------------+----------------+-------+

      untuk di PHP nya tinggal disesuaikan mas

      $query=(mysqli_query($sql));
      while($row=mysqli_fetch_array($query)) {
        echo $row['nama'] . ': ' . $row['total_gagal'] . '-' . $row['total_berhasil'] . '-' . $row['total'] . '
      '; }
  • tabel_siswa
    + - - - - - - - - + - - - - - - - - - - -+
    | nama            | kelas                |
    + - - - - - - - - + - - - - - - - - - - -+
    | Andi            |      I A             |
    | Budi            |      II A            |
    | Irwan           |      II A            |
    | Didin           |     II A             |
    + - - - - - - - - + - - - - - - - - - - -+
    
    tabel_kelas
    + - - - - - - - - - - + - - - - - - - - - - - +
    | Nama                | Jumlah siswa          |
    + - - - - - - - - - - + - - - - - - - - - - - +
    |    I A              |        --             |
    |    II A             |        --             |
    + - - - - - - - - - - + - - - - - - - - - - - +
    

    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.

    • Coba pakai query ini mas:

      UPDATE 	tabel_kelas
          	LEFT JOIN ( SELECT kelas, COUNT(nama) AS jm_siswa 
          		FROM tabel_siswa GROUP BY kelas
          		) AS tb_siswa
      		ON tb_siswa.kelas = tabel_kelas.nama
      SET tabel_kelas.jumlah_siswa = tb_siswa.jm_siswa

      Hasil:

      +------+--------------+
      | nama | jumlah_siswa |
      +------+--------------+
      | IA   |            1 |
      | IIA  |            3 |
      +------+--------------+
  • mas mau tanya
    saya ada table seperti ini

    +-+————————–+————————+-+———+–+——–+—-+——-+
    id|nama_kecamatan|nama_kelurahan|a| b | c | d | e | f |
    +————————————————————————————————+
    1 |blabla | lalala |ya|tidak|ya|tidak| ya|tidak|
    —————————————————————————————————-
    2 |blablablala | lalala lal |ya|ya |ya|tidak| ya|tidak|
    —————————————————————————————————-

    bagaimana caranya menghitung jumlah ya dan tidak berdasarkan nama kelurahan?
    terima kasih

  • saya memiliki tabel seperti ini

    id | nama | kategori a | kategori b | kategori c|
    ———————————————————————-
    1 | dia | bisa | tidak | bisa |
    ———————————————————————–
    2 | aku | tidak | bisa | bisa |

    bagaimana menghitung brp bnyk tidak dan bisa secara VERTIKAL ( per kategori )
    bukan secara horizontal ?

    Makasih

  • Mass mau nanya.. Untuk kode mata kuliah yang sama hanya boleh diambil satu mata kuliah dengan nilai terbaik. Membuat querynya gimana

    • Coba diurutkan datanya berdasarkan kode mata kuliah yang sama kemudian diambil yang tertinggi nilainya mas. Jika ada contoh tabel dan contoh hasil yang diinginkan akan lebih mudah

  • mas, saya kan punya tabel siswa. saya ingin menghitung jumlah siswa laki-laki berapa dan siswa perempuan berapa perkelas. mohon bantuannya mas menggunakan php , maaf mas masih newbie. hehe terimakasih

    id nama_siswa nisn ttl kelas jenkel usia ibu
    1 suroto 482016 4896 6 Lk 12 suyati
    2 surdi 482016 4197 5 Pr 11 jumini

  • saya mau tanya gan,,
    misal tabel nya seperti ini

    +----------+-------------------+--------+-------------+
    | id_atlet | nama              | gender | asal_daerah |
    +----------+-------------------+--------+-------------+
    | 01BTL    | Rahmat Firmansyah | L      | Jakarta     |
    | 01BTP    | Cindi Wantari     | P      | Bandung     |
    | 01CTL    | Bagus Arjuna      | L      | Jogja       |
    | 01RNL    | Gunawan Putra     | L      | Jakarta     |
    | 01RNP    | Sari Laraswati    | P      | Solo        |
    | 01VLL    | Asep Gunanjar     | L      | Solo        |
    | 02BTP    | Yuli Rahman       | P      | Jakarta     |
    | 02RNL    | Agus Riyanto      | L      | Jakarta     |
    | 02VLP    | Andela Yuwono     | P      | Solo        |
    | 03RNL    | Kurniawan         | L      | Bandung     |
    +----------+-------------------+--------+-------------+
    
    Saya ingin menampilkan kolom gender dan asal daerah saja.
    namun di total kalkulasi setiap daerah.
    seperti ini tabel nya 
    
    +----------+-------------+---------------+
    | gender   | asal_daerah | count(gender) |
    +----------+-------------+---------------+
    | L        | Bandung     | 1             |
    | P        | Bandung     | 1             |
    | P        | Jakarta     | 1             |
    | L        | Jakarta     | 3             |
    | L        | Jogja       | 1             |
    | L        | Solo        | 1             |
    | P        | Solo        | 2             |
    +----------+-------------+---------------+
    
    itu syntax sql nya gimana ya..?? terimakasih..
    • Intinya kalau ingin menghitung jumlah baris tinggal gunakan count mas, sehingga pada contoh diatas, tinggal dihitung barisnya saja menggunakan COUNT terus di group sesuai yang diinginkan

      SELECT gender,
      	asal_daerah,
      	COUNT(gender) AS jumlah
      FROM atlet
      GROUP BY gender, asal_daerah
      ORDER BY asal_daerah, gender

      Hasil:

      +--------+-------------+--------+
      | gender | asal_daerah | jumlah |
      +--------+-------------+--------+
      | L      | Bandung     |      1 |
      | P      | Bandung     |      1 |
      | L      | Jakarta     |      3 |
      | P      | Jakarta     |      1 |
      | L      | Jogja       |      1 |
      | L      | Solo        |      1 |
      | P      | Solo        |      2 |
      +--------+-------------+--------+
      
      • kok ane hasil nya begini doang gan…???
        sisa nya dia nggak tampil, hanya 1 doang..
        +——–+————-+——–+
        | gender | asal_daerah | jumlah |
        +——–+————-+——–+
        | P | Solo | 1 |
        +——–+————-+——–+

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

        select *from jadwal;
        +-----------+------------+-------------+----------+
        | id_jadwal | tanggal    | kd_olahraga | id_atlet |
        +-----------+------------+-------------+----------+
        | 01KM      | 2016-01-07 | CTL         | 01CTL    |
        | 01RB      | 2016-01-06 | BTL         | 01BTL    |
        | 01SL      | 2016-01-05 | RNL         | 03RNL    |
        | 01SN      | 2016-01-04 | RNP         | 01RNP    |
        | 02RB      | 2016-01-06 | VLL         | 01VLL    |
        | 02SL      | 2016-01-05 | BTP         | 01BTP    |
        | 02SN      | 2016-01-04 | RNL         | 01RNL    |
        | 03RB      | 2016-01-06 | VLP         | 02VLP    |
        | 03SL      | 2016-01-05 | BTP         | 02BTP    |
        | 03SN      | 2016-01-04 | RNL         | 02RNL    |
        +-----------+------------+-------------+----------+
        
        select *from olahraga;
        +-------------+----------------+-----------+
        | kd_olahraga | jenis_olahraga | kategori  |
        +-------------+----------------+-----------+
        | BTL         | Bulu Tangkis   | Laki-laki |
        | BTP         | Bulu Tangkis   | Perempuan |
        | CTL         | Catur          | Laki-laki |
        | CTP         | Catur          | Perempuan |
        | RNL         | Renang         | Laki-laki |
        | RNP         | Renang         | Perempuan |
        | VLL         | Voli           | Laki-laki |
        | VLP         | Voli           | Perempuan |
        +-------------+----------------+-----------+
        

        hasil yang di cari tabel nya seperti ini gan;

        +----------------+--------+
        | jenis_olahraga | jumlah |
        +----------------+--------+
        | BuluTangkis    |      3 |
        | Catur          |      1 |
        | Renang         |      4 |
        | Voli           |      2 |
        +----------------+--------+
        
        • 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:

          SELECT jenis_olahraga
          FROM tb_jadwal
          LEFT JOIN tb_olahraga USING(kd_olahraga)

          Hasil:

          +----------------+
          | jenis_olahraga |
          +----------------+
          | BuluTangkis    |
          | BuluTangkis    |
          | BuluTangkis    |
          | Catur          |
          | Renang         |
          | Renang         |
          | Renang         |
          | Renang         |
          | Voli           |
          | Voli           |
          +----------------+

          Selanjutnya kita hitung menggunakan COUNT

          SELECT jenis_olahraga,
          	COUNT(jenis_olahraga) AS jumlah
          FROM (
          	SELECT jenis_olahraga
          	FROM tb_jadwal
          	LEFT JOIN tb_olahraga USING(kd_olahraga)
          ) AS olahraga
          GROUP BY jenis_olahraga

          Hasil:

          +----------------+--------+
          | jenis_olahraga | jumlah |
          +----------------+--------+
          | BuluTangkis    |      3 |
          | Catur          |      1 |
          | Renang         |      4 |
          | Voli           |      2 |
          +----------------+--------+

          Metode tersebut bisa digunakan dengan syarat nama jenis_olahraga nya sama persis untuk laki laki dan perempuan, jika tidak perlu digunakan cara lain

  • siang gan mau nanya:
    kalau kita mau menambahkan foreign key atau primary key disaat table sudah dibuat sintaksnya gimana yah??

  • bearti ini 2x proses ya gan…??
    pertama menampilkan keseluruhan jenis olahraga berdasarkan jadwal, yang kedua baru di hitung masing2 jumlah jadwal nya…
    kalau misalnya kita langsung menampilkan hasil akhir nya bearti dengan SELECT dalam SELECT ya..??
    yang cara kedua..

    • 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 kd_olahraga,
      	CASE 
      		WHEN kd_olahraga LIKE "B%" THEN "BULU TANGKIS"
      		WHEN kd_olahraga LIKE "R%" THEN "RENANG"
      		WHEN kd_olahraga LIKE "C%" THEN "CATUR"
      		WHEN kd_olahraga LIKE "V%" THEN "VOLI"
      		ELSE NULL
      	END AS jenis
      FROM tb_jadwal

      Hasil:

      +-------------+--------------+
      | kd_olahraga | jenis        |
      +-------------+--------------+
      | CTL         | CATUR        |
      | BTL         | BULU TANGKIS |
      | RNL         | RENANG       |
      | RNP         | RENANG       |
      | VLL         | VOLI         |
      | BTP         | BULU TANGKIS |
      | RNL         | RENANG       |
      | VLP         | VOLI         |
      | BTP         | BULU TANGKIS |
      | RNL         | RENANG       |
      +-------------+--------------+

      Selanjutnya kita group berdasarkan nama tersebut (Query jadi):

      SELECT COUNT(kd_olahraga) AS jumlah,
      	CASE 
      		WHEN kd_olahraga LIKE "B%" THEN "BULU TANGKIS"
      		WHEN kd_olahraga LIKE "R%" THEN "RENANG"
      		WHEN kd_olahraga LIKE "C%" THEN "CATUR"
      		WHEN kd_olahraga LIKE "V%" THEN "VOLI"
      		ELSE NULL
      	END AS jenis
      FROM tb_jadwal
      GROUP BY jenis

      Hasil:

      +--------+--------------+
      | jumlah | jenis        |
      +--------+--------------+
      |      3 | BULU TANGKIS |
      |      1 | CATUR        |
      |      4 | RENANG       |
      |      2 | VOLI         |
      +--------+--------------+
  • Pagi Mas mohon sangat bantuanny dah mentok nih…
    saya punya query

    SELECT YEARWEEK (rawat_tindakan.tgl_tindakan) as tgl, tindakan.nm_tindakan, COUNT(rawat_tindakan.tgl_tindakan) AS jml
    FROM rawat_tindakan
    left JOIN tindakan ON rawat_tindakan.kd_tindakan = tindakan.kd_tindakan
    WHERE rawat_tindakan.kd_tindakan =’T006′
    group by tgl

    Hasilnya :
    tgl | nm_tindakan |jml
    201640 | Accupresure |1
    201644 | Accupresure |3

    Yang sya harapkan Hasilnya seperti ini :

    tgl | nm_tindakan |jml
    201640 | Accupresure |1
    201641 | Accupresure |0
    201642 | Accupresure |0
    201643 | Accupresure |0
    201644 | Accupresure |3

    saya coba rubah query seperti ini :

    SELECT YEARWEEK (rawat_tindakan.tgl_tindakan) as tgl, tindakan.nm_tindakan,
    COUNT(IF(rawat_tindakan.tgl_tindakan, NULL)) AS jml
    FROM rawat_tindakan
    left JOIN tindakan ON rawat_tindakan.kd_tindakan = tindakan.kd_tindakan
    WHERE rawat_tindakan.kd_tindakan =’T006′
    group by tgl

    tapi timbul error mas yaa? mohon koreksi dan bantuannya mas..
    Makasih sebelumnya

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

    no    | nama_perumahan      | nama_blok     |jml_rumah      | kapasitas_per_rumah     
    1     | ANDALUSIA           | A1            | 4            | 8			      
    2     | ANDALUSIA           | B1            | 5            | 4                       
    3     | ANDALUSIA           | C1            | 5            | 6                       
    4     | BARCALONA           | A2            | 5            | 4
    5     | BARCALONA           | B2            | 5            | 4
    6     | BARCALONA           | C2            | 3            | 4
    7     | PARIS               | A3            | 4            | 8
    8     | PARIS               | B3            | 6            | 8
    

    *tbl_rumah

    no    | nama_perumahan      | nama_blok     |no_id      | nama    	| no_rumah 
    1     | ANDALUSIA           | A1            | a01       | andi		| 1
    2     | ANDALUSIA           | A1            | a02       | budi          | 1
    3     | ANDALUSIA           | B1            | a03       | raka          | 2
    4     | ANDALUSIA           | A1            | a04       | raki          | 2	
    5     | BARCALONA           | A2            | a05       | riki          | 1
    6     | BARCALONA           | A2            | a06       | riski         | 1
    7     | BARCALONA           | A2            | a07       | rindi         | 2
    8     | BARCALONA           | A2            | a08       | riko          | 3
    9     | BARCALONA           | A2            | a09       | nindi         | 1
    10    | PARIS               | B3            | a10       | aris          | 5
    11    | PARIS               | B3            | a11       | jimi          | 5
    

    # tampilan dinginkan seperti ini mas

    no | nama_perumahan  | nama_blok | no_rumah  | kapasitas_per_rumah   | jumlah_penghuni | sisa_kpsitas_perrumah
    

    terima kasih banyak mas

      • seperti ini mas tampilannya

        +----------------+-----------+----------+---------------------+--------------+----------------+
        | nama_perumahan | nama_blok | no_rumah | kapasitas_per_rumah | jml_penghuni | sisa_kapasitas |
        +----------------+-----------+----------+---------------------+--------------+----------------+
        | ANDALUSIA      | A1        | 1        | 8                   |            2 |              6 |
        | ANDALUSIA      | A1        | 2        | 8                   |            1 |              7 |
        | ANDALUSIA      | B1        | 2        | 4                   |            1 |              3 |
        | BARCALONA      | A2        | 1        | 4                   |            3 |              1 |
        | BARCALONA      | A2        | 2        | 4                   |            1 |              3 |
        | BARCALONA      | A2        | 3        | 4                   |            1 |              3 |
        | PARIS          | B3        | 5        | 8                   |            2 |              6 |
        +----------------+-----------+----------+---------------------+--------------+----------------+
        
        • Coba query ini mas:

          SELECT nama_perumahan, 
          	tbl_rumah.nama_blok, no_rumah, 
          	kapasitas_per_rumah, 
          	COUNT(no_rumah) AS jml_penghuni, 
          	kapasitas_per_rumah - COUNT(nama_perumahan) AS sisa_kapasitas
          FROM tbl_rumah
          LEFT JOIN tbl_nama_perumahan USING(nama_perumahan, nama_blok)
          GROUP BY nama_perumahan, nama_blok, no_rumah

          Hasil:

          +----------------+-----------+----------+---------------------+--------------+----------------+
          | nama_perumahan | nama_blok | no_rumah | kapasitas_per_rumah | jml_penghuni | sisa_kapasitas |
          +----------------+-----------+----------+---------------------+--------------+----------------+
          | ANDALUSIA      | A1        | 1        | 8                   |            2 |              6 |
          | ANDALUSIA      | A1        | 2        | 8                   |            1 |              7 |
          | ANDALUSIA      | B1        | 2        | 4                   |            1 |              3 |
          | BARCALONA      | A2        | 1        | 4                   |            3 |              1 |
          | BARCALONA      | A2        | 2        | 4                   |            1 |              3 |
          | BARCALONA      | A2        | 3        | 4                   |            1 |              3 |
          | PARIS          | B3        | 5        | 8                   |            2 |              6 |
          +----------------+-----------+----------+---------------------+--------------+----------------+
          

          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

  • Halo mas, saya udah coba ngikutin cara yg ada di postingan ini. Tapi gimana kalo kasusnya begini:
    struktur tabel:
    no.penjualan
    harga
    pencuci_1
    pencuci_2

    Contoh data
    001 500 budi joko
    002 100 anton susi
    003 200 budi susi
    004 300 doni budi
    005 200 susi doni

    Gimana caranya mengelompokkan data tersebut menjadi berikut:
    Budi : 3
    Joko : 1
    Anton : 1
    Susi : 3
    Doni : 2

    Hasil yg saya peroleh dari query:
    SELECT
    pencuci_1,pencuci_2,
    count(pencuci_1) as total_cuci,
    count(pencuci_2) as total_cuci2
    FROM
    penjualan_detail
    group by pencuci_1 and pencuci_2

    adalah data yg nampil gak sesuai dgn yg saya inginkan diatas.

    Mohon solusi nya mas, terima kasih

    • Coba gunakan subquery mas, subquerynya:

      SELECT pencuci_1 
      FROM tbl_pencucian
      	UNION ALL
      SELECT pencuci_2 
      FROM tbl_pencucian

      Hasil:

      +-----------+
      | pencuci_1 |
      +-----------+
      | budi      |
      | anton     |
      | budi      |
      | doni      |
      | susi      |
      | joko      |
      | susi      |
      | susi      |
      | budi      |
      | doni      |
      +-----------+

      Masukkan kedalam query induk, sehingga menjadi:

      SELECT  pencuci_1, 
      	COUNT(pencuci_1) AS jumlah
      FROM (
      	SELECT pencuci_1 
      	FROM tbl_pencucian
      		UNION ALL
      	SELECT pencuci_2 
      	FROM tbl_pencucian
      ) AS pencuci
      GROUP BY pencuci_1

      Hasil:

      +-----------+--------+
      | pencuci_1 | jumlah |
      +-----------+--------+
      | anton     |      1 |
      | budi      |      3 |
      | doni      |      2 |
      | joko      |      1 |
      | susi      |      3 |
      +-----------+--------+
  • Maaf mas, mau nanya. saya membuat database krs sederhana didalamnya ada table mahasiswa dan kelas. dimana id_kelas yang diambil mahasiswa akan terhitung sebagai jumlah_mahasiswa_kelas. bagaimana query nya?

  • Numpang tanya gan, misal saya ingin menampilkan jumlah nilai a hanya pada no_rm 212 gimana gan ?
    (penjumlahannya ke samping)
    +—–+———–+———-+—-+———+———+————+——————+———–+—————+
    | no | no_rm | nama | jk | tgllhr | umur | alamat | pendidikan | agama | tanggal |
    +—–+———–+———-+—-+———+———+————+——————+———–+—————+
    | 12 | 212 | a | a | b | a | a | a | a | 2016-11-08 |
    | 15 | 900 | a | b | c | a | b | c | a | 2016-11-14 |
    | 14 | 9090 | a | b | c | a | b | c | a | 2016-11-14 |
    | 13 | 88686 | a | a | b | a | b | c | b | 2016-11-08 |

  • mas help..
    saya ada tugas buat aplikasi data keluarga..sy udah buat pencarian data berdasarkan RT RW..bagaimana cara hitung jumlah agama misalnya “islam” pada tabel pencarian berdasarkan RT..saya udah cari tp dapetnya tuh

    $query = “SELECT count(*) AS jumIslam FROM kependudukan WHERE agama = ‘Islam'”;
    $hasil = mysql_query($query);
    $data = mysql_fetch_array($hasil);
    $jumIslam = $data[‘jumIslam’];

    masalahnya ni kode ngitung semua data dalam database…plis mas

  • Assalamualaikum mas. Saya mau minta tolong saya ada tugas tampilkan tahun kabisat menggunakan database. Bagaimana ya mas databasenya?, soalnya saya tidak ada bayangan sama sekali makasih.

  • webnya membantu sekali mas , mas saya mau bertanya contoh kasusnya begini :
    nama tabel tb_test

    +---+---------------+-----------
    | id| hitungan |Diagnosa
    +---+---------------+-----------
    | 1 |      200      | HT
    | 2 |      211      | HT
    | 3 |      300      | PJK
    | 4 |      111      | HT
    | 5 |      411      | HT
    | 6 |      100      | PJK
    +---+---------------+------------
    

    saya ingin mengambil 3 Data terkecil dari ‘hitungan’ maka hasilnya begini :

    | id| hitungan |Diagnosa
    +---+---------------+-----------
    | 6 |      100      | PJK
    | 4 |      111      | HT
    | 1 |      200      | HT
    +---+---------------+------------
    

    lalu saya ingin menghitung jumlah Diagnosa yang ‘PJK’ dan ‘HT’
    hasil :
    PJK = 1
    HT = 2
    terimakasih sebelumnya

  • Mas/Bang – Salam kenal
    Minta bantuan pencerahannya
    saya punya tabel dengan gambaran sederhana Sebagai berikut :

    Nomor 1

    +------------+-------------+------------+-----------------+
    | asset_code | estate_code | asset_type | asset_condition |
    +------------+-------------+------------+-----------------+
    | KAPSSE001  | SSE         | KOM        | BAIK            |
    | KAPSSE002  | SSE         | MTR        | RUSAK           |
    | KAPSPE003  | SPE         | MTR        | BAIK            |
    +------------+-------------+------------+-----------------+
    

    Nomor 2
    Data yg ingin sya tampilkan adalah sbb :

    +------------+----------+-----------+----------+-----------+
    | asset_type | SSE-BAIK | SSE-RUSAK | SPE-BAIK | SPE-RUSAK |
    +------------+----------+-----------+----------+-----------+
    | KOM        |        1 |         0 |        0 |         0 |
    | MTR        |        0 |         1 |        1 |         0 |
    +------------+----------+-----------+----------+-----------+

    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 http://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

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

      SELECT
      	asset_type,
      	COUNT(
      		CASE 
      			WHEN estate_code = 'SSE' 
      				AND asset_condition = 'BAIK'
      			THEN 1
      			ELSE NULL
      		END 
      	) AS 'SSE-BAIK',
      	COUNT(
      		CASE 
      			WHEN estate_code = 'SSE' 
      				AND asset_condition = 'RUSAK'
      			THEN 1
      			ELSE NULL
      		END 
      	) AS 'SSE-RUSAK',
      	COUNT(
      		CASE 
      			WHEN estate_code = 'SPE' 
      				AND asset_condition = 'BAIK'
      			THEN 1
      			ELSE NULL
      		END 
      	) AS 'SPE-BAIK',
      	COUNT(
      		CASE 
      			WHEN estate_code = 'SPE' 
      				AND asset_condition = 'RUSAK'
      			THEN 1
      			ELSE NULL
      		END 
      	) AS 'SPE-RUSAK'
      FROM tabel
      GROUP BY asset_type

      Hasil:

      +------------+----------+-----------+----------+-----------+
      | asset_type | SSE-BAIK | SSE-RUSAK | SPE-BAIK | SPE-RUSAK |
      +------------+----------+-----------+----------+-----------+
      | KOM        |        1 |         0 |        0 |         0 |
      | MTR        |        0 |         1 |        1 |         0 |
      +------------+----------+-----------+----------+-----------+
      
  • maaf mas, saya mau nanya saya punya kendala untuk menghitung jumlah dari masing masing pengelola

    Pengelola|    done |pending|failed|total
    A   	 |	1  |	 0 |	0 |2771
    B   	 |	0  |	 0 |	0 |33647
    C   	 |	5  |	 0 |   10 |2871
    D        |	0  |	 2 |	0 |7736
    E   	 |	2  |	 0 |	3 |1729

    query yang saya pakai :
    SELECT pengelola, count(if(status=’done’,1,NULL)) as done,
    COUNT(if(status=’failed’,1,NULL)) as failed,
    COUNT(if(status=’pending’,1,NULL)) as pending,
    count(*) as total from tbl_pm GROUP BY pengelola ASC

    • Maksudnya yang kolom total ya mbak? Coba query ini mbak:

      SELECT pengelola, 
      	COUNT(IF(status='done',1,NULL)) as done,
      	COUNT(IF(status='failed',1,NULL)) as failed,
      	COUNT(IF(status='pending',1,NULL)) as pending,
      
      	COUNT(IF(status='done',1,NULL)) 
      	+ COUNT(IF(status='failed',1,NULL))
      	+ COUNT(IF(status='pending',1,NULL))
      	AS total 
      
      FROM tbl_pm 
      GROUP BY pengelola ASC

      Sebaiknya tidak menggunakan implisit order (ASC atau DESC) pada klausa GROUP BY, karena fitur ini sudah deprecated di versi 5.7 dan akan dihilangkan pada MySQL versi berikutnya

  • assalamualaikum
    menampilkan data mahasisaw ( TgLahir diikuti dengan jumblah mahasiswa yang lahir di kota tersebut) contah lahir di jombang (5) surabaya(4) gmna mas . terima kasih

    • waalaykumsalam
      Untuk menghitung jumlah gunakan COUNT mas
      coba gunakan query semacam ini:
      SELECT tgl_lahir,
      COUNT(IF(kota = “jombang”, tgl_lahir, NULL)) as jombang,
      COUNT(IF(kota = “surabaya”, tgl_lahir, NULL)) as surabaya
      FROM tabel
      GROUP BY tgl_lahir

      Query diatas hanya gambaran saja mas, akan jauh lebih mudah jika ada contoh data dan output yang diingin

  • assalamualaikum
    pak saya ingin mengitung jumlah man power yang berada di tabel karyawan.
    NO NAMA PROYEK JUMLAH MAN POWER LIHAT JUMLAH MAN POWER
    1 C4. ITC DEPOK.DEPOK
    2 CF089-CF CIBINONG 1
    3 CF366-CF CIBINONG 2
    4 HY064-HY SENTUL
    5 HY035-HY EKALOSARI BOGOR
    6 LL438-MUNCHYS BOGOR

    bagaimana yaa pak untuk menghitung jumlah karyawan yang berada di tabel karyawan berdasarkan kd_proyek. terimakasih

      • Terimakasih mas sudah menyempatkan untuk menjawab. mungkin deskripsi saya kurang. saya sudah dapat jawaban nya dari atasan saya. hehe makasih.
        kuerinya seperti ini
        select c.kd_proyek, c.nama_proyek, count(d.kd_proyek) mp from tabel_user a, tabel_koordinator b, maping c, karyawan d where a.nik=b.nik and b.kd_proyek = c.kd_proyek and a.nik = $_SESSION[nik] and d.kd_proyek = c.kd_proyek group by c.kd_proyek, c.nama_proyek order by c.kd_proyek, c.nama_proyek

  • slmt sore, mohon bantuannya

    data tabel saya

    no tgl keterangan saldo
    1 2016-10-21 data1 10.000
    2 2016-10-21 data2 20.000
    3 2016-10-21 data3 30.000
    4 2016-10-21 data4 40.000
    1 2016-10-22 data1 50.000
    2 2016-10-22 data2 40.000
    3 2016-10-22 data3 20.000
    4 2016-10-23 data4 10.000

    Bagaimana menampilkan data dengan php mysql:

    no keterangan tanggal1(2016-10-21) tanggal2(2016-10-22) total
    1 data1 10.000 50.000 60.000
    2 data2 20.000 40.000 60.000
    3 data3 30.000 20.000 50.000
    4 data4 40.000 10.000 50.000

    Terima kasih tas bantuannya
    sukses selalu

      • selamat pagi Pak, saya coba gunakan seperti ini tapi masih error ” mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in ”

        $con = mysqli_connect(“localhost”, “root”, “”, “reporting”);
        $sql = “SELECT no,
        SUM(IF(tgl=’2016-10-21′), saldo, 0)) AS tanggal1,
        SUM(IF(tgl=’2016-10-20′), saldo, 0)) AS tanggal2
        FROM tb_tks GROUP BY keterangan”;

        $query = mysqli_query($con, $sql);
        while ($row = mysqli_fetch_array($query))
        {
        echo $row[‘no’] . ‘ || ‘ . $row[‘tanggal1’];
        }
        Terima kasih, suskes selalu

  • Slmt sore pak saya coba menggunakan pivot tabel php dan mysql yng saya download tapi muncul pesan error : Call to undefined function mysqli_fetch_all() in C:\wamp\www\pivot-table-dengan-php-mysql\pivot-table-total-manual-custom-sort.php on line 31,

    apakah ada setingan php yg harus di ubah ya?

    terima kasih.

  • untuk pertanyaan saya contoh nya seperti Pivot Table Dinamis Dengan MySQL,
    saya utak atik dulu kalau tidak berhasil baru saya bertanya lagi,
    makasih banyak infonya, sukses selalu

  • Assalamualaikum mas Agus.

    Saya sedang mencoba menggunakan Where pada Hasil Count.

    SELECT
    DSN$ID AS ‘INDUK’,
    COUNT (DSN$ID) AS ‘JUMLAH’
    FROM ABSENSI
    WHERE ‘JUMLAH’ >5;

    Tapi masih kesulitan. Ada apa ya !?

    • Coba menggunakan having mas.
      WHERE tidak bisa digunakan pada kolom yang terbentuk saat runtime (seketika itu juga saat kolom terbentuk)
      yang pada contoh diatas adalah kolom JUMLAH (kolom alias)

      SELECT
      DSN$ID AS 'INDUK',
      COUNT (DSN$ID) AS 'JUMLAH'
      FROM ABSENSI
      HAVING 'JUMLAH' >5;
      

      Contoh WHERE pada kolom yang sudah terbentuk (temporary table):

      SELECT * FROM
      (
      	SELECT
      	DSN$ID AS 'INDUK',
      	COUNT (DSN$ID) AS 'JUMLAH'
      	FROM ABSENSI
      )  AS tabel
      WHERE JUMLAH > 5
      
  • selamat sore pak, mohon bantuannya, saya punya tabel libur berisi tanggal libur 26-12-2016, 31-12-2016

    $tgl_awal= ‘2016-12-21’;
    $tgl_akhir= ‘2016-12-20’;

    $sql1 = mysqli_query($conn,”SELECT * FROM tbl_libur”);
    while($p=mysqli_fetch_array($sql1)){
    $tgl = $p[‘tgl’];

    mysqli_query(“INSERT INTO hadir (id, tanggal, masuk, keluar )
    SELECT id, tgl, MIN(jam) AS masuk, MAX(jam) AS keluar
    FROM mesin_absen WHERE tgl BETWEEN ‘$tgl_awal’ AND ‘$tgl_akhir’ AND tgl !=’$tgl’
    GROUP BY id, tgl “);
    }

    saya igin melakukan proses insert data yang bisa di masukan tanggal 21-12-2016 sampai 21-01-2016, yang tidak termasuk hari libur,

    proses yang saya buata di atas terjadi duplikasi data dan hari libur juga di masukan dalam database, mohon bantuannya.

    terima kasih

    • Sebisa mungkin hindari query dalam loop mas….

      Untuk kasus diatas, coba gunakan operator IN:

      INSERT INTO hadir (id, tanggal, masuk, keluar )
      	SELECT id, tgl, MIN(jam) AS masuk, MAX(jam) AS keluar
      	FROM mesin_absen 
      	WHERE tgl BETWEEN '$tgl_awal' AND '$tgl_akhir' AND tgl NOT IN '$tgl_libur'
      	GROUP BY id, tgl

      $tgl_libur nya gunakan SQL:

      SELECT CONCAT('("',GROUP_CONCAT(tgl_libur SEPARATOR '","'),'")') 
      FROM tbl_libur

      Hasil $tgl_libur adalah : (“2016-12-26″,”2016-12-31”)

  • mas bisa minta tolong?
    saya sedang narik data dari mesin finger print hasil penarikan sudah saya olah menjadi strktur table seperti dibawah ini:

    +----------------+----------+------------+----------+
    | id_absen*      | pin      | tanggal    | jam      |
    +----------------+----------+------------+----------+
    | 1              |  1       | 2017-01-03 | 07:50:01 |  
    | 2              |  1       | 2017-01-03 | 17:07:35 | 
    | 3              |  1       | 2017-01-04 | 07:55:21 |  
    | 4              |  1       | 2017-01-04 | 17:00:00 |  
    | 5              |  1       | 2017-01-05 | 07:50:01 |  
    | 6              |  1       | 2017-01-05 | 17:07:35 | 
    | 7              |  1       | 2017-01-06 | 07:55:21 |  
    | 8              |  1       | 2017-01-06 | 17:00:00 |   
    +----------------+----------+------------+----------+
    

    yang ingin saya inginkan output melalui php seperti dibawah ini:

    +----------------+----------+------------+------------+------------+
    | id_absen*      | pin      | tanggal    | jam masuk  | jam pulang |
    +----------------+----------+------------+------------+------------+
    | 1              |  1       | 2017-01-03 | 07:50:01   | 17:07:35   |  
    | 2              |  1       | 2017-01-04 | 07:55:21   | 17:00:00   |  
    | 3              |  1       | 2017-01-05 | 07:50:01   | 17:07:35   |  
    | 4              |  1       | 2017-01-06 | 07:55:21   | 17:00:00   | 
    +----------------+----------+------------+------------+------------+
    

    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

    • Untuk querynya bisa dicoba ini mas:

      SELECT id_absen, 
      	pin, 
              tanggal, 
              MIN(jam) As jam_masuk, 
              MAX(jam) AS jam_pulang 
      FROM absen
      GROUP BY tanggal

      Hasil:

      +----------+-----+------------+-----------+------------+
      | id_absen | pin | tanggal    | jam_masuk | jam_pulang |
      +----------+-----+------------+-----------+------------+
      |        1 |   1 | 2017-01-03 | 07:50:01  | 17:07:35   |
      |        3 |   1 | 2017-01-04 | 07:55:21  | 17:00:00   |
      |        5 |   1 | 2017-01-05 | 07:50:01  | 17:07:35   |
      |        7 |   1 | 2017-01-06 | 07:55:21  | 17:00:00   |
      +----------+-----+------------+-----------+------------+

      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

      SELECT id_absen, 
      	pin, 
              tanggal, 
              MIN(jam) As jam_masuk, 
              MAX(jam) AS jam_pulang 
      FROM absen
      WHERE tanggal >= NOW() - INTERVAL 1 MONTH
      GROUP BY tanggal
  • selamat siang mas agus mau nanya saya punya masalah sebagai berikut :

    berikut rumus yang saya buat di exsel

    NO	bulan	tahun	 AKTUAL	         FORCEST	EROR
    1	Jan	2015	 866,648 		
    2	feb	2015	 885,179 		
    3	mar	2015	 854,475 		
    4	apr	2015	 1,077,098 	 868,767 	208331
    5	mei	2015	 883,194 	 938,917 	-55723
    6	jun	2015	 920,795 	 938,256 	-17461
    7	jul	2015	 1,152,320 	 960,362 	191958
    8	ags	2015	 936,219 	 985,436 	-49217
    9	sep	2015	 1,280,080 	 1,003,111 	276969
    10	okt	2015	 938,535 	 1,122,873 	-184338
    11	nov	2015	 740,441 	 1,051,611 	-311170
    12	des	2015	 1,169,366 	 986,352 	183014
    13	JAN	2016	 949,447 	
    TOTAL 			 11,704,350 	 8,855,687 	 242,361 
    

    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.

    • Itu kita mau menghitung data forecast sama error ya mas?
      Yang data di gambar pertama itu data awalnya?
      Rumus penghitungan forecast dan error seperti apa ya mas?
      sama contoh script PHP nya yang sudah dibuat

    • Misal datanya di tabel forecast ya mas:

      mysql> SELECT * FROM forecast;
      +----+-------+-------+---------+
      | no | bulan | tahun | aktual  |
      +----+-------+-------+---------+
      |  1 | Jan   |  2015 |  866648 |
      |  2 | feb   |  2015 |  885179 |
      |  3 | mar   |  2015 |  854475 |
      |  4 | apr   |  2015 | 1077098 |
      |  5 | mei   |  2015 |  883194 |
      |  6 | jun   |  2015 |  920795 |
      |  7 | jul   |  2015 | 1152320 |
      |  8 | ags   |  2015 |  936219 |
      |  9 | sep   |  2015 | 1280080 |
      | 10 | okt   |  2015 |  938535 |
      | 11 | nov   |  2015 |  740441 |
      | 12 | des   |  2015 | 1169366 |
      | 13 | JAN   |  2016 |  949447 |
      +----+-------+-------+---------+
      13 rows in set (0.00 sec)

      Apa maksudnya seperti ini mas?

      SELECT f_no, bulan, tahun, aktual, forecast, (aktual - forecast) as ERROR 
      FROM(
          SELECT no as f_no, bulan, tahun, aktual, 
                  (SELECT IF (f_no > 3, ROUND(SUM(aktual)/3), NULL) 
                          FROM forecast 
                          WHERE no > f_no - 4 AND no < f_no
                  ) AS forecast
      
          FROM forecast
      ) as tmp

      Hasil:

      +------+-------+-------+---------+----------+---------+
      | f_no | bulan | tahun | aktual  | forecast | ERROR   |
      +------+-------+-------+---------+----------+---------+
      |    1 | Jan   |  2015 |  866648 |     NULL |    NULL |
      |    2 | feb   |  2015 |  885179 |     NULL |    NULL |
      |    3 | mar   |  2015 |  854475 |     NULL |    NULL |
      |    4 | apr   |  2015 | 1077098 |   868767 |  208331 |
      |    5 | mei   |  2015 |  883194 |   938917 |  -55723 |
      |    6 | jun   |  2015 |  920795 |   938256 |  -17461 |
      |    7 | jul   |  2015 | 1152320 |   960362 |  191958 |
      |    8 | ags   |  2015 |  936219 |   985436 |  -49217 |
      |    9 | sep   |  2015 | 1280080 |  1003111 |  276969 |
      |   10 | okt   |  2015 |  938535 |  1122873 | -184338 |
      |   11 | nov   |  2015 |  740441 |  1051611 | -311170 |
      |   12 | des   |  2015 | 1169366 |   986352 |  183014 |
      |   13 | JAN   |  2016 |  949447 |   949447 |       0 |
      +------+-------+-------+---------+----------+---------+
      • maaf mas agus gagal pesanny berikut SQL query: Documentation

        SELECT f_no, bulan, tahun, aktual, forecast, (`jumlah` – forecast) as ERROR FROM (SELECT `no_penjualan` as f_no, bulan, tahun, aktual(SELECT IF (f_no > 3, ROUND(SUM(`jumlah`)/3), NULL) FROM tbpenjualan WHERE no > f_no – 4 AND no 3, ROUND(SUM(`jumlah`)/3), NULL)
        FROM tb’ at line 3

        itu ada maslh di mana ya?

  • mas mau nanya, gimana ya cara ngehitung siswa lulus ujian dimana kasusnya adalah mata pelajaran ada 3, yaitu mtk, ipa dan bahasa indonesia. bagaimana cara menghitung record dari hasil gabungan total 3 mata pelajaran yang dinyatakan lulus. misalkan roni lulus 3 mata pelajaran maka keterangannya lulus. sedangkan siswa yang lain tidak lulus.

    bagaimana cara membuat “select count” nya agar kita bisa menampilkan Total siswa yang lulus?

    makasih,

  • bang, ada tabel mahasiswa, angkatan, kelas dalam database
    lalu kalau saya ingin menampilkan hitungan kolom data tersebut pada php dengan teknik mysqli procedural, gimana caranya?

  • selamat malam mas, mohon bantuanya mas untuk query data dari absen untuk kasus spt ini :

    security shift malam masuk jam 23:00:00 pulang jam 07:00:00

    +----------------+----------+------------+----------+
    | id_absen*      | pin      | tanggal    | jam      |
    +----------------+----------+------------+----------+
    | 1              |  1       | 2017-02-23 | 23:00:00 | 
    | 2              |  1       | 2017-02-24 | 07:00:21 |  
    
    

    jika query sql ini

    SELECT id_absen, 	pin,  tanggal,  MIN(jam) As jam_masuk,  MAX(jam) AS m_pulang 
    FROM absen GROUP BY pin, tanggal
    

    tanggal 23-02-2017 masuk jam 23 :00 keluar jam 23 :00
    tanggal 24-02-2017 masuk jam 07 :00 keluar jam 07 :00

    bagaimana menghasilkan query
    tanggal 23-02-2017 masuk jam 23 :00 keluar jam 07:00 ?

    terima kasih atas bantunnya

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

    +----------------+----------+------------+----------+
    | id_absen*      | pin      | tanggal    | jam      |
    +----------------+----------+------------+----------+
    | 1              |  1       | 2017-02-23 | 23:00:00 | 
    | 1              |  1       | 2017-02-24 | 07:00:21 | 
    
    | 1              |  1       | 2017-02-24 | 23:00:00 | 
    | 1              |  1       | 2017-02-25 | 07:00:21 | 
    
    | 1              |  1       | 2017-02-25 | 23:00:00 | 
    | 1              |  1       | 2017-02-26 | 07:00:21 | 

    kalau menampilkan data seperti ini :

    +----------------+----------+------------+----------+
    | id_absen*      | pin      | tanggal    | jam  masuk     |tanggal | jam  pulang     |
    +----------------+----------+------------+----------+
    | 1              |  1       | 2017-02-23 | 23:00:00 |  2017-02-24 | 07:00:21 | 
    | 1              |  1       | 2017-02-24 | 23:00:00 |  2017-02-25 | 07:00:21 | 
    | 1              |  1       | 2017-02-25 | 23:00:00 |  2017-02-26 | 07:00:21 | 
    | 1              |  1       | 2017-02-26 | 23:00:00 |  2017-02-27 | 07:00:21 | 
    | 1              |  1       | 2017-02-27 | 23:00:00 |  2017-02-28 | 07:00:21 | 
     
    

    terima kasih atas bantunnya

    • 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

      +----------------+----------+------------+----------+
      | id_absen*      | pin      | tanggal    | jam      |
      +----------------+----------+------------+----------+
      | 1              |  1       | 2017-02-23 | 23:00:00 | 
      | 1              |  1       | 2017-02-24 | 07:00:01 | 
      | 1              |  1       | 2017-02-24 | 07:00:21 | 
      
      | 1              |  1       | 2017-02-24 | 23:00:00 | 
      | 1              |  1       | 2017-02-25 | 07:00:21 | 
      
      | 1              |  1       | 2017-02-25 | 23:00:00 | 
      | 1              |  1       | 2017-02-26 | 07:00:21 |
      
      | 1              |  1       | 2017-02-28 | 23:00:00 | 
      | 1              |  1       | 2017-03-01 | 07:00:21 |

      Akan lebih memudahkan jika ada flagnya, misal:

      +----------------+----------+------------+----------+-----------+
      | id_absen*      | pin      | tanggal    | jam      | aktifitas |
      +----------------+----------+------------+----------+-----------+
      | 1              |  1       | 2017-02-23 | 23:00:00 | 1         |
      | 1              |  1       | 2017-02-24 | 07:00:01 | 1         |
      | 1              |  1       | 2017-02-24 | 07:00:21 | 1         |
      
      | 1              |  1       | 2017-02-24 | 23:00:00 | 2         |
      | 1              |  1       | 2017-02-25 | 07:00:21 | 2         |
      
      | 1              |  1       | 2017-02-25 | 23:00:00 | 3         |
      | 1              |  1       | 2017-02-26 | 07:00:21 | 3         |
      
      | 1              |  1       | 2017-02-28 | 23:00:00 | 4         |
      | 1              |  1       | 2017-03-01 | 07:00:21 | 4         |

      Tapi saya rasa tidak mungkin menambahkan flag.

      Tapi kalau mau coba pakai SQL bisa pakai SELF JOIN:

      Contoh data:

      +----------+------+------------+----------+
      | id_absen | pin  | tanggal    | jam      |
      +----------+------+------------+----------+
      |        1 |    1 | 2017-02-23 | 23:00:00 |
      |        2 |    1 | 2017-02-24 | 07:00:21 |
      |        3 |    1 | 2017-02-24 | 07:00:22 |
      |        4 |    1 | 2017-02-24 | 23:00:03 |
      |        5 |    1 | 2017-02-25 | 07:00:05 |
      |        7 |    1 | 2017-03-01 | 07:00:00 |
      |        6 |    1 | 2017-02-28 | 23:00:00 |
      +----------+------+------------+----------+
      SELECT *  FROM
      (SELECT pin, tanggal, MIN(jam), @rnum := @rnum +1 as urut 
      	FROM absen, (select @rnum := 0) as num
      	Where jam >= "23:00:00"
      	GROUP By tanggal
      ) AS  temp
      LEFT JOIN
      (SELECT tanggal, MAX(jam), @rnum2 := @rnum2 +1 as urut
      	FROM absen, (select @rnum2 := 0) as num2
      	Where jam <= "08:00:00"
      	GROUP BY tanggal
      ) AS temp2
      ON temp.urut = temp2.urut

      Hasil:

      +------+------------+----------+------+------------+----------+------+
      | pin  | tanggal    | MIN(jam) | urut | tanggal    | MAX(jam) | urut |
      +------+------------+----------+------+------------+----------+------+
      |    1 | 2017-02-23 | 23:00:00 |    1 | 2017-02-24 | 07:00:22 |    1 |
      |    1 | 2017-02-24 | 23:00:03 |    2 | 2017-02-25 | 07:00:05 |    2 |
      |    1 | 2017-02-28 | 23:00:00 |    3 | 2017-03-01 | 07:00:00 |    3 |
      +------+------------+----------+------+------------+----------+------+

      Tapi query diatas tidak dapat mengakomodir pegawai yang tidak absen salah satu, masuk atau pulang. Sebaiknya olah data dari sisi aplikasi

  • Mau tanya pak saya masih newbi ..
    Tabel nya seperti ini

    Nama mtk ipa pai jumlah nilai
    Andi. 100. 80. 70. ?
    Aldo 40. 76. 67. ?

    Jumlah nilai nya bagemana ya sy mnggunkan php mysqli

    • Rumus untuk menghitung julah dan nilai bagaimana mas? jika penjumlahan dari kolom lain, tinggal menggunakan operator plus ( + ), misal:

      SELECT nama, mtk, ipa, pai, mtk + ipa + pai AS jumlah
      FROM tabel
  • mau tanya mas,.
    itu fungsi COUNT(IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)) AS item_2016, penjelasan ny bagaimana,.?
    yg sy paham bagian IF( YEAR(tgl_byr) = 2016 adalah kondisi kolom mana yang akan dihitung,.nah sedangkan, bagian jml_byr, dan NULL itu maksunya apa,..?

    • Fungsi IF memiliki tiga argumen, yang pertama kondisi, kedua jika kondisi true, yang ketiga jika kondisi false, sehingga pada:

      IF( YEAR(tgl_byr) = 2016, jml_byr, NULL)

      Jika kondisi terpenuhi, gunakan kolom jml_byr sehingga seolah olah query menjadi

      SELECT(COUNT(jml_byr))
  • selamat siang mas agus, saya mau nanya.. kalau saya mau nampilkan query berdasarkan tanggal tpi reportnya dalam waktu perminggu tiap akhir bagaimana ya ? mohon bantuannya, terimakasih sebelumnya

    +------+------------+----------+------+------------+----------+------+
    | pin  | tanggal    | MIN(jam) | urut | tanggal    | MAX(jam) | urut |
    +------+------------+----------+------+------------+----------+------+
    |    1 | 2017-02-23 | 23:00:00 |    1 | 2017-02-24 | 07:00:22 |    1 |
    |    1 | 2017-02-24 | 23:00:03 |    2 | 2017-02-25 | 07:00:05 |    2 |
    |    1 | 2017-02-28 | 23:00:00 |    3 | 2017-03-01 | 07:00:00 |    3 |
    +------+------------+----------+------+------------+----------+------+
    • +------------+--------+--------+---------+
      | tgl_msk    | kd_brg | kd_sup | jml_msk |
      +------------+--------+--------+---------+
      | 2016-03-02 | B001   | S002   | 2       |
      | 2016-03-17 | B001   | S001   | 4       |
      | 2016-03-18 | B003   | S001   | 5       |
      | 2016-03-23 | B002   | S002   | 3       |
      +------------+--------+--------+---------+

      mungkin lebih jelas pke tabel ini aja mas,, saya mau mengurutkan berdasarkan perminggu mas dari tanggalnya ..

    • Maaf mas, maksudnya bagaimana ya mas? maaf belum paham:D
      Itu tabel awal yang ada di database?
      Kalau berdasarkan tanggal tinggal di definisikan di bagian WHERE mas, atau bisa dicontohkan tabel hasilnya seperti apa?

  • jadi begini mas,. saya lagi buat data absensi dimana datanya itu harus direport dalam tiap minggu kapanpun admin ngecek datanya.. ini contoh datanya :

    +-----------------+----------------+-----------+------------+
    | NIM             | id_mata_kuliah | Kehadiran | Waktu      |
    +-----------------+----------------+-----------+------------+
    | 202136403689217 |           1104 | H         | 2017-04-03 |
    | 202136403689217 |           1234 | TH        | 2017-04-03 |
    | 202136403689217 |           1234 | H         | 2017-04-04 |
    | 202136403689217 |           1104 | H         | 2017-04-02 |
    | 202136403689217 |           1234 | H         | 2017-04-01 |
    | 202136403689217 |           1104 | TH        | 2017-04-05 |
    | 202136403689217 |           1104 | TH        | 2017-04-06 |
    | 202136403689217 |           1104 | TH        | 2017-04-07 |
    | 202136403689217 |           1234 | H         | 2017-04-08 |
    +-----------------+----------------+-----------+------------+
    

    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

    +-----------------+----------------+---------------+------------+-----------+
    | NIM             | Nama           | jenis_kelamin | Waktu      | Kehadiran |
    +-----------------+----------------+---------------+------------+-----------+
    | 202136403689217 | Sadewa Chandra | Laki-laki     | 2017-04-08 | H         |
    | 202136403689217 | Sadewa Chandra | Laki-laki     | 2017-04-04 | H         |
    | 202136403689217 | Sadewa Chandra | Laki-laki     | 2017-04-03 | TH        |
    +-----------------+----------------+---------------+------------+-----------+

    apakah hal tersebut memungkinkan mas?
    apakah ada hal lain yang bisa mempermudah mas ? mohon bantuannya
    apa saya bisa minta kontaknya mas?
    terimakasih sebelumnya

    • Maaf untuk memperjelas lagi mas, misal admin ngecek Selasa, tanggal 4 April 2017, data yang ditampilkan Minggu, tanggal 2 April 2017 s.d Sabtu Tanghal 2 April 2017 ya mas?

  • slmt malam mas agus,, mas mau tanya,, penggunaan fungsi yang tepat seperti apa ya, ? pada saat insert data siswa,, jumlah row dibawah 30 kelas otomatis di set “kelas A”dan jumlah row diatas 30 di set “kelas B” begitu selanjutnya,,

  • . mas saya mau bertanayak mas .
    TENTUKAN TOTAL SUARA PERKECAMATAN
    (KODEKEC, NAMAKEC, TOTAL SUARA CALON1,
    TOTAL SUARA CALON2, TOTAL SUARA CALON3)

    • Coba seperti ini mbak:

      SELECT NAMAKEC, SUM(`TOTAL SUARA CALON1`) AS SUARA_CALON1,
      	SUM(`TOTAL SUARA CALON2`) AS SUARA_CALON2,
      	SUM(`TOTAL SUARA CALON3`) AS SUARA_CALON3
      FROM tabel
      GROUP BY kecamatan
  • mas saya mau tanya,
    kalo mau ngitung jumlah ketidakhadiran dosen menurut nama dosen nya dihitung persemesternya gimana ya mas? query nya gimana?
    tablenya cuma tanggatidakhadir sma dosen aja.
    mohon bantuannya mas.

      • kalau tanggal nya ditentukan seperti itu, untuk menghitung semester berikutnya gimna mas?
        query nya biar 1 aja buat ngitung semua semester mas.
        maaf mas soalnya masih belajar

        • Agar otomatis mengkalkulasi semester awal dan akhir, bisa menggunakan statemen kondisi mbak, misal:

          SELECT YEAR(tgl_tidak_hadir) AS tahun,
          	dosen, 
          	CASE WHEN SUBSTRING (tgl_tidak_hadir, 6) > "01-00" 
          		AND SUBSTRING (tgl_tidak_hadir, 6) < "07-01"
          		THEN semester_1,
          	CASE WHEN SUBSTRING (tgl_absen, 6) > "07-00" 
          		AND SUBSTRING (tgl_absen, 6) < "12-99"
          		THEN semester_2,
          FROM absen_dosen
        • Agar otomatis, mengkalkulasi semester awal dan akhir, bisa menggunakan if mbak, misal:

          SELECT YEAR(tgl_tidak_hadir) AS tahun,
          	dosen, 
          	CASE WHEN SUBSTRING (tgl_tidak_hadir, 6) > "01-00" 
          		AND SUBSTRING (tgl_tidak_hadir, 6) < "07-01"
          		THEN semester_1,
          	CASE WHEN SUBSTRING (tgl_absen, 6) > "07-00" 
          		AND SUBSTRING (tgl_absen, 6) < "12-99"
          		THEN semester_2,
          FROM absen_dosen
        • Agar otomatis, mengkalkulasi semester awal dan akhir, bisa menggunakan if mbak, misal:

          SELECT YEAR(tgl_tidak_hadir) AS tahun,
          	dosen, 
          	CASE WHEN SUBSTRING (tgl_tidak_hadir, 6) > "01-00" 
          		AND SUBSTRING (tgl_tidak_hadir, 6) < "07-01"
          		THEN semester_1,
          	CASE WHEN SUBSTRING (tgl_absen, 6) > "07-00" 
          		AND SUBSTRING (tgl_absen, 6) < "12-99"
          		THEN semester_2,
          FROM absen_dosen
          • oke mas makasi.

            mas, saya mau nanyk lagi.
            kalo cara nampilin semua data hasil dari data yang dijumlah menggunakan ‘count’ itu gimana ya mas?
            soalnya punya saya gak mau muncul semua data nya, yang muncul cuma 1 tpi jumlah data yg dihitung itu benar.
            semisal yg dicari tgl 05, data yang ada ditanggal 05 itu seharusnya 3 tpi yg ditampilin pada table itu cuma 1. sedangkan pada table jumlahnya benar 3.
            itu gimna ya mas??

  • Assallamlkm..
    Mas Mohon info nya jika saya punya data

    Cabang		jenis motor		Pesanan		Standar		Kelebihan
    bogor	II	Honda	II	5	II	7	II	-2
    lampung	II	Yamaha	II	5	II	7	II	-2
    jakarta	II	Yamaha	II	7	II	7	II	0
    medan	II	Yamaha	II	18	II	7	II	9
    aceh	II	Honda	II	9	II	7	II	2
    

    saya mau menjumlahkan Data Kelebihan tetapi yang bernilai >=0
    jdi yang bernilai minus tidak ikut dijumlahkan
    Jadi saya ingin mendapatkan hasil 11 bukan 7..
    Mohon dibantu..

  • mas, saya mau tanya. gimana carang menampilkan konsumen yang memilih 3 jenis barang di e-commerce ?
    terima kasih

    • Bisa menggunakan fungsi COUNT mbak atau kalusa WHERE tergantung tabel nya seperti apa
      Mungkin bisa dicontohkan bentuk tabelnya seperti apa? kalau bisa beserta contoh datanya

  • no nama KP Kode Bobot
    1 Dwi Yulianti AP1 1 3
    7 Dwi Yulianti AP1 2 4,5
    2 Dwi Yulianti AP1 1 5
    8 Dwi Yulianti AP2 1 5
    9 Dwi Yulianti AP2 2 5
    3 Dwi Yulianti AP1 2 4
    10 Dwi Yulianti AP2 2 5
    4 Dwi Yulianti AP1 2 5
    5 Dwi Yulianti AP1 2 5
    6 Dwi Yulianti AP1 2 5

    mau tanya jika saya mau menjumlah nilai bobot berdasarkan isi dari KP dan Kode yang sama, misal KP dengan isi AP1, Kode isi 1 nilai bobot dijumlahkan ,
    ini digunakan pada rumus SPK metode profile mathing,

  • Met Malam mas mint tolong mas unutk sql dan menampilaknnya sya coba gagal terus.. maaf baru belajar
    tabel
    NO Nama Asal Sekolah
    1. Budi SDN 2
    2. anto SDN 3
    3. Viki SDN 1
    4. Rita SDN 1
    5. riko SDN 2
    6. reni SDN 1

    saya pengen mnghitung Jumlah siswa pendaftar dari Setiap SD di php mohon bantuannya terimakasih

  • Mas tolong bantu saya gimana caranya menhitung jumlah kab berdasarkan id provinsi dan menghitung jumlah kecamatan berdasarkan id kabupaten

    Dan hasilnya menampilkan data kecamatan??

  • Iya sya jg berfikiran bgtu mas
    Cmn soal yang diberikan seperti itu mas..

    Atau begini sja mas bisa tdak menghitung Jumlah kab berdasarkan id prov dan jumlah kec berdasarkan Id kab.. Dan Hasilnya seperti apa?

  • MariaDB [final_201611070]> select*from provinsi;
    +---------+---------+
    | id_prov | nm_prov |
    +---------+---------+
    |   1001  | sulteng |
    |   1002  | sulsel  |
    +---------+---------+
    MariaDB [final_201611070]> select*from kabupaten;
    +--------+---------+-------------------+------------+
    | id_kab | id_prov | nm_kab            | jumlah_kab |
    +--------+---------+-------------------+------------+
    |   3001 |    1001 | banggai           |         13 |
    |   3002 |    1001 | banggai kepulauan |         13 |
    |   3003 |    1002 | bulukumba         |         12 |
    |   3004 |    1002 | bone              |         12 |
    +--------+---------+-------------------+------------+
    MariaDB [final_201611070]> select*from kecamatan;
    +--------+--------+---------------+------------+
    | id_kec | id_kab | nm_kec        | jumlah_kec |
    +--------+--------+---------------+------------+
    |   4001 |   3001 | luwuk timur   |         10 |
    |   4002 |   3001 | luwuk selatan |         11 |
    |   4003 |   3002 | salakan       |         14 |
    |   4004 |   3002 | tinangkung    |         12 |
    |   4005 |   3003 | bontotiro     |         13 |
    |   4006 |   3003 | bonto bahari  |         13 |
    |   4007 |   3004 | lamuru        |         15 |
    |   4008 |   3004 | mare          |         10 |
    +--------+--------+---------------+------------+
    

    menghitung jumlah kab berdasarkan id prov
    menghitung jumlah kec berdasarkan id kab

    querynya yang gimna mas?

  • mas nayak, gemana caranya kalo mau buat grafik jumlah siswa lulusan per tahun dengan data
    nama||tahun_lulus||
    andi||2015
    jono||2016
    joko||2016
    joyo||2015

  • soalnya hampir sama dengan diatas, cma field jumlah kabupaten dan jumlah kecamatan dihilangkan
    MariaDB [final_201611070]> select*from provinsi;

    +---------+---------+
    | id_prov | nm_prov |
    +---------+---------+
    |   1001  | sulteng |
    |   1002  | sulsel  |
    +---------+---------+
    MariaDB [final_201611070]> select*from kabupaten;
    +--------+---------+-------------------+------------+
    | id_kab | id_prov | nm_kab            | 
    +--------+---------+-------------------+------------+
    |   3001 |    1001 | banggai           |         
    |   3002 |    1001 | banggai kepulauan |        
    |   3003 |    1002 | bulukumba         |       
    |   3004 |    1002 | bone              |       
    +--------+---------+-------------------+------------+
    MariaDB [final_201611070]> select*from kecamatan;
    +--------+--------+---------------+------------+
    | id_kec | id_kab | nm_kec        | 
    +--------+--------+---------------+------------+
    |   4001 |   3001 | luwuk timur   |         
    |   4002 |   3001 | luwuk selatan |      
    |   4003 |   3002 | salakan       |     
    |   4004 |   3002 | tinangkung    |   
    |   4005 |   3003 | bontotiro     |        
    |   4006 |   3003 | bonto bahari  |       
    |   4007 |   3004 | lamuru        |        
    |   4008 |   3004 | mare          |
    
  • Assalamualaikum,,, numpang tanya mas, saya punya tabel jadwal seperti ini.

    +-----------+-------+------------+---------------------+---------------+-----------+
    | kd_jadwal | hari  | kode_kelas | nama_mata_pelajaran | jam           | kode_guru |
    +-----------+-------+------------+---------------------+---------------+-----------+
    | PJ001     | senin | TKJ10      | database            | 07.00-09.00   | RS        |
    | PJ003     | senin | TKJ10      | Komputer            | 13.00 - 14.30 | MH        |
    | PJ002     | senin | TKJ10      | laptop              | 13.00 - 14.30 | RS        |
    +-----------+-------+------------+---------------------+---------------+-----------+
    

    saya mau menampilkannya di tabel di web seperti ini.

    hari	         |   Nama_mata_pelajaran	|         jam	    |      Kode_guru   |
                     |             database	        | 07.00-09.00	    |       RS         |
    senin	         |              laptop	        | 13.00 - 14.30	    |       MH         |
    	         |              Komputer	| 13.00 - 14.30     |       RS         |
    

    kira – kira script phpnya bagaimana ya mas…??? MOHON BANTUANNYA..

    • Untuk SQL nya seperti biasa mas:
      SELECT * FROM tabel
      Untuk tampilan tabelnya lebih ke variasi script PHP nya dalam menggenerate kode HTML, Untuk memudahkan, bisa dibuat array dengan index hari, misal:

      <?php
      $sql = 'SELECT * FROM tabel';
      $query = mysqli_query($conn, $sql);
      while($row = mysqli_fetch_assoc($query)) {
      	$result[$row['hari']] = $row;
      }
      
      // Buat HTML
      echo '<table>
      	<thead>
      		<tr>
      			<th>hari</th>
      			<th>Mata Pelajaran</th>
      			<th>Jam</th>
      			<th>Kode Guru</th>
      		</tr>
      	</thead>
      	<tbody>';
      			
      foreach($result as $hari => $val) {
      	echo '<tr>
      		<td rowspan="'.count($val).'">' . $row['hari'] . '</td>';
      		
      		foreach ($arr as $key => $val) {
      			if ($key > 0)
      				echo '<tr>';
      			
      			echo '<td rowspan="3">' . $row['nama_mata_pelajaran'] . '</td>
      				<td rowspan="3">' . $row['jam'] . '</td>
      				<td rowspan="3">' . $row['kode_guru'] . '</td>
      				</tr>';
      		}
      }
      
      echo '</tbody>
      	</table>';
  • trus mas, kalo seperti ini seandainya di dalam tabel tersebut ada hari selasa, rabu dn sterusnya,, kira- kira scriptnya gimna ya mas…???

    • Nanti otomatis muncul mas hari yang lain, namun jika ditabeh harinya tidak ada, maka ditampilannya juga tidak ada, misal jika ditabel harisnya senin, rabu, kamis, maka haris selasa di tabel output tidak muncul

  • 1. t_tnh

    kdlokasi kdbrg kuantitas
    ——————————————
    a1 2 4
    b2 3 3
    c3 1 2
    c3 2 6
    b2 2 7
    a1 1 5
    a1 1 8

    2. t_lok

    kdlok lokasi
    —————————–
    a1 bandung
    b2 solo
    c3 medan

    3. t_sel

    kdbrg brgur
    ——————————————
    1 paku
    2 semen
    3 papan

    saya minta tolong master…gagal terus, output ingin seperti ini jadi 2 tabel:
    sebagai catatan: dalam database saya nama field kdlok (kode lokasi) dalam tabel t_lok berbeda namanya dengan nama field kdlokasi (kode lokasi) dalam tabel t_tnh tapi isi fieldnya sama berupa kode lokasi. minta tolong pake syntax php ya master….

    kdlokasi/kdlok lokasi jum_brg
    ——————————————————
    a1 bandung 3
    b2 solo 2
    c3 medan 2

    kdbrg brgur jum_brg
    ——————————————————
    1 paku 3
    2 semen 3
    3 papan 1

    • Yang pertama coba ini mas:
      SELECT kdlok, lokasi, COUNT(kdlokasi)
      FROM t_lok
      LEFT JOIN t_tnh ON t_lok.dkdlok = t_tnh.kdlokasi

      yang kedua:
      SELECT kdlok, lokasi, COUNT(kdlokasi)
      FROM t_sel
      LEFT JOIN t_tnh ON t_lok.dkdlok = t_tnh.kdlokasi

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

    tabel jadwal
    +-----------+--------+------------+---------------------+----+
    | kd_jadwal | hari   | kode_kelas | nama_mata_pelajaran |uru |
    +-----------+--------+------------+---------------------+----+
    | PJ001     | senin  | TKJ10      | database            |    |
    | PJ005     | selasa | TKJ10      | keyboard            |    |
    | PJ003     | senin  | TKJ10      | Komputer            |    |
    | PJ004     | selasa | TKJ10      | pc                  |    |
    | PJ002     | senin  | TKJ10      | laptop              |    |
    +-----------+--------+------------+---------------------+----+
    
    tabel guru
    +-----------+---------------+------------------------+-----------+---------------+---------------------+------------+
    | kode_guru | NIP           | nama_lengkap           | tempathir | jenis_kelamin | pendidikan_terakhir | keterangan |
    +-----------+---------------+------------------------+-----------+---------------+---------------------+------------+
    | MH        | 000000000000  | Muhammad Harman Nardin | liang     | L             | D3                  | PNS        |
    | RS        | 9090000909099 | Rismayanti             | liang     | L             | D3                  | Honorer    |
    | VR        | 909000909000  | valention Rosi         | Barat
    
    tabel kelas
    +------------+--------------------------
    | kode_kelas | nama_kelas
    +------------+--------------------------
    | NKN10      | Nautika Kapal Niaga X
    | NKN11      | Nautika Kapal Niaga XI
    | TKJ10      | Teknik komputer dan Jarin
    +------------+--------------------------
    

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

  • Mas Untuk Mendapatkan Harga Total Per ID mas Bagaiman Ya.

    Saya Punta Tabel Barang

    $kdbrg = $_POST[‘kdbrg’];
    $nmbrg = $_POST[‘nmbrg’];
    $satuan = $_POST[‘satuan’];
    $hrg_satuan = $_POST[‘hrg_satuan’];
    $jumlah = $_POST[‘jumlah’];
    $total = $jumlah * $hrg_satuan;

    $sql = “INSERT INTO tbl_barang SET kd_brng=’$kdbrg’, nm_brng=’$nmbrg’, satuan=’$satuan’, hrg_satuan=’$hrg_satuan’, jumlah=’$jumlah’ hrg_total=’$total'”;

    tapi pada saat save muncul
    You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ‘hrg_total=’0” at line 1

    Mohon bantuan Baru Newbie terimakasih

  • selamat malam pak.. saya ingin membuat laporan kunjungan perhari, sesuai umur.. kira kira begini tampilannya :

    NO
    TANGGAL
    JENIS KELAMIN

    LAKI-LAKI
    PEREMPUAN

    kurang dari 10 tahun
    10-30 tahun
    31-50 tahun
    lebih dari 50 tahun

    kurang dari 10 tahun
    10-30 tahun
    31-50 tahun
    lebih dari 50 tahun

    1
    2017-07-01

    2
    3
    4
    2

    5
    7
    3
    2

    untuk database nya terdapat tanggal_kunjungan, id_kunjungan, id_member, jenis_kelamin dan umur. kira-kira apakah ada sintak yang dapat digunakan? saya masih bingung menggunakan Count-If. Terimakasih atas perhatiannya pak..

  • selamat malam mas agus, sya mau brtynya, apakah query ini bisa diterapkan pada bahasa pemrograman java ?

  • permisi,,,
    mau tanya donk,,,
    tlg jika coding dibawah ini ditambahkan dengan “limit” (perhalaman menampilkan 10database), maka yang perlu diubah/ditambahin bagian mana saja ya?
    ini potongan codingnya,,,

    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
    }

    terimakasih sebelumnya,,,

      • 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”;
        }
        }
        ?>

        • $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,,, 🙂

          • Tidak apa apa mas, di wordpress nya untuk comment terkait coding terbatas:

            1. Gunakan $_GET mas, jangan $_POST, coba baca artikel di web ini, perbedaan POST dan GET
            2. Kenapa ada $db, $db2, dan $db3? jika untuk mengakomodir kondisi semua wilayah dan wilayah tertentu, bisa dibuat dinamis di PHP nya selanjutnya, querynya dibuat satu saja, coba pelajari artikel di web ini dengan judul PHP FORM III

        • Tidak apa apa terpotong mas. Intinya di querynya ditambahkan limit.
          Misal: untuk menampilkan 10 data di halaman pertama:

          $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."%' LIMIT 10");
          

          Untuk menampilkan 10 data di halaman kedua (data dimulai dari data ke 11:

          $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."%' LIMIT 10, 10");
          

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

          $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."%' LIMIT ". ($_GET['page'] - 1 * 10) .", 10");
          
  • maaf gan saya pemula dan masih belajar. gan, mohon bantuannya. gmn cara menghitung total hari, harusnya hasilnya 1, ini malah tidak muncul (array)? saya pakai codeigniter dan php.
    _________________________________________________________________________
    Tanggal | Telat | Pulang Cepat | Lembur | Lama Kerja |
    2017-07-28 | 00:28:27 | 06:31:08 | | 00:00:25 |
    ________________________________________________________________________ |
    Total Hari : Array ?

    • Pertama yang penting querynya benar mas. Maksudnya total hari yang apa ya mas?
      Kalau menghitung semua baris tinggal menggunakan fungsi COUNT
      di CI tinggal dimasukkan sqlnya, misal:

      $sql = 'SELECT COUNT(tanggal) FROM tabel';
      $query = $this->db->query($sql)->result_array();
      echo '<pre>'; print_r($query);
  • mas klo misal sya ada tabel seperti ini
    —————————————————————————–
    tahun| nama kelurahan| umur a | umur b | umur c|
    —————————————————————————–
    2014 | a | 2 | 2 | 2|
    2014 | b | 1 | 1 | 1 |
    2015 | a | 3 | 2 | 3 |

    data tsbt ingib saya filter berdasarkan
    1. nama kelurahan
    2 . tahun
    jadi hasilnya :
    a = 2014 = > total umur=6
    a = 2015 => total umur = 8

    mohon bantuannya
    terima kasih

    • Maksudnya seperti apa ya mas?
      Kalau mau mendapatkan total umur a, tahun 2014 bisa menggunakan query:
      SELECT tahun, nama_kelurahan, umur_a + umur_b + umur_c
      FROM tabel
      WHERE tahun = 2014 AND nama_kelurahan = “a”

      Kalau mau mendapatkan total umur a, tahun 2015 bisa menggunakan query:
      SELECT tahun, nama_kelurahan, umur_a + umur_b + umur_c
      FROM tabel
      WHERE tahun = 2015 AND nama_kelurahan = “a”

  • hallo bang,, mau nanya bang….
    contoh tabelnya:
    “Tbl Jumlah Donasi”
    5000
    6000
    6799
    5000
    Total =…….
    gimana klo mau hitung total nya bang………….

  • mas agus bole minta bantu bagaimana caranya buat koding di msql untuk mendapatkan keterangan hadir pada tabel absensi jika status masuk 0 pulangnya 1, jika digabungkan 0 dan 1 artinya hadir saya tak dapat logikanya mas

  • Sangat bermanfaat. Mas mau nanya misal saya punya database transaksi seperti ini
    ID Item
    1 Mobil
    1 Motor
    1 Sepeda
    2 Motor
    2 Sepeda
    3 Motor
    3 Mobil
    saya ingin menghitung jumlah ID yg memiliki item motor dan mobil
    kode sql saya => “select count(Faktur)>=2 from tabel where Item in(“motor”,”mobil”)”
    tetapi tidak bisa jalan. Utk menghitung jumlah ID yg memiliki item motor dan mobil bagaimana ya? terimakasih sebelumnya

    • Maksudnya item yang memiliki nilai:
      1. motor DAN mobil atau
      2. motor ATAU mobil mas?
      apakah maksudnya yang kedua?
      kalau yang kedua querynya sudah benar dengan asumsi kolom faktur ada di tabel.
      “select count(Faktur)>=2 from tabel where Item in(‘Motor’,’Mobil’)”

  • mas kalau untuk menampilkan tanggal dimana tanggal tersebut tidak terduplikasi lebih dari 2 x dan paling dekat dengan tanggal saat ini gimana ya..
    +——–+——————+
    | No. | tgl |
    +——–+——————+
    | 1. | 30/08/2017 |
    | 2. | 30/08/2017 |
    | 3. | 30/08/2017 |
    | 1. | 31/08/2017 |
    | 1. | 01/09/2017 |
    +——–+——————+
    tampil 31/08/2017 ..

  • mas mau tanya, kalau mau simpan data, datanya gini
    event: id_event, judul
    struktur: id_struktur, jabatan, nama, id_event. kenapa di struktur id_eventnya setelah di select selalu muncul hasil yang sama?

      • tabel event :
        id event (int) PK
        judul (varchar)

        tabel struktur:
        id_struktur (int) PK
        jabatan (varchar)
        nama (varchar)
        id_event (int) FK

        saya mau buat combo box untuk judul di tabel struktur dengan php, tapi setelah melakukan proses simpan dan datanya ditampilin datanya mau di proses. tetapi saat ditampilin data yang dari judul, datanya sama terus gimana ya mas? saat pilih judul lain tetap nampilin judul dengan id nomor 1 terus mas.

  • Siang gan,

    Mohon bantuan gan,

    gan , kalau misalnya setelah kita cek jumlah data di mysql dan apabila jumlahnya kurang dari 20 maka bisa insert tapi kalau sudah lebih dari 20 maka gagal insert. gmn ya gan?

  • kak mau tanya script yang bisa mengetahui jumlah data pada table.. misalnya di dashboard kan ada pasien nah disitu saya mau kasihkan jumlah pasien nya trs scriptnya gimana ya kak?? soalnya buat UPK.. terimakasih

  • pa saya ingin bertanya, saya mendapat tugas dari tempat prakerin saya untuk membuat website penyewaan rusun saya bingung ketika kamar sudah disewa oleh 2 orng maka bila disewa lagi tidak bisa karena kamar hanya bisa di sewa oleh 2 orang itu query nya bagaimana?

    • Di cek disisi alikasinya mbak…
      Ketika form disubit, cek apakah kamar sudah berisi dua orang, jika ya, maka munculkan pesan error, jika tidak, masukkan datanya. Misal:

      isset($_POST['submit']) {
      	$jml_tamu = 'SELECT....';
      	if ($jml_tamu < 2) {
      		$sql = 'Update ... ';
      	} else {
      		echo 'ERROR: Kamar sudah penuh';
      	}
      }
  • kak..mau tanya kalo saya punya tabel kayak gini (sebut saja naanya tb_rekapan)

    kode | tanggal | nilai_a |nilai_b | nilai_c
    001 | 2017-01-02 | 2000 | 3000 | 2000
    002 | 2017-01-02 | 2000 | 1000 | 4000
    003 | 2017-01-02 | 2000 | 2000 | 1000
    004 | 2017-01-03 | 5000 | 4000 | 1000
    005 | 2017-01-03 | 2000 | 1000 | 2000

    jadi disini tersedia combo box tanggal yang isinya tanggal data tanggal dari tb_rekapan, textfield total_a, textfield total_b, textfield total_c. jadi, apabila memilih salah satu tanggal yang ada di combo box, maka textfield total_a, total_b, dan total_c otomatis terisi otomatis.

    bagaimana script php untuk menjumlahkan total dari nilai_a, nilai_b, nilai_c berdasarkan tanggal yang dipilih ya kak?
    atas bantuan jawabannya saya ucapkan terimakasih

    • Itu cocok menggunakan javascript mas, atau menggunakan library jquery. Event yang digunakan event click, jadi ketika di klik di cek apakah checkbox tercentang, jika tercentang, ambil data berdasarkan tanggal, kemudian ditampilkan pada textfield yang sesuai.

  • Malem pak.kalau saya punya dua tabel,kehamilan dan ibu.dimana saya mau count jumlah kehamilan dan di order berdasarkan id_desa yang ada di tabel ibu..kira2 gimana ya pak?
    jd outputnya
    desa jumlah
    A 1
    B 0
    C 3
    karena dari yg saya coba,yg jumlah kehamilannya 0 tidak termasuk di tabel.trims bantuannya

  • Sore Mas Agus, saya memperhatikan semua kasus di kolom komentar itu dengan berbagai masalah.
    1. Saya sangat mengapresiasi semua jawaban dan kesabaran Mas Agus dalam menjawab semua pertanyaan diatas
    2. Kalau seandainya, saya menemukan kasus dengan kerumitan dari segi tabel mau query dengan keterbatasan ilmu dan kemampuan. langkah apa yang perlu dilakukan agar dapat menyelesaikan kasus seperti itu?.

    Terimakasih.

  • assalamualaikum mas , boleh minta bantuannya untuk hitung saldo tabungan siswa ada kredit dan debit hitung berdasarkan nis dari siswa

  • assalamu’alaikum.

    maaf mas boleh minta bantuan jika saya ingin menampilkan hasil seperti ini :

    range_usia jumlah
    16 – 20 5
    21 – 25 10
    dst……

    dari tabel

    NIP NAMA TGLLHR

    1234456 NARDI 12/02/1975
    4564425 RIZAL PALAPA 09/07/1976
    8975856 MANISO 20/04/1962
    5634364 ASWAN MAPUSSA 13/05/1984
    F464654 RIZKY PARAMITA 17/03/1988
    5885656 PARNINGOTAN YOSI SILALAHI 17/08/1980
    C558524 SULFIKAR 12/01/1991

    udah di query jd

    USIA JUMLAH

    16 4
    18 4
    20 223
    21 1606
    22 2813
    dst……

    bagaimana ya mas?

    mohon bantuannya. terima kasih

    wassalamu’alaikum

    • Coba menggunakan COUNT IF mbak berdasarkan tanggal lahir, misal:

      SELECT "16 - 20" AS USIA, 
      	COUNT IF(YEAR(NOW) - YEAR(tgllahir) >= 16 AND YEAR(NOW) - YEAR(tgllahir) =< 20, NIP, NULL) AS JUMLAH
      FROM TABEL
  • Assalamualaikum mass..
    Maaf mas.. boleh bisa bantu, bagaimana cara menampilkan dari data di bawah ini, nantinya
    yang menerima tau berapa orang dan tidak menerima berapa orang mas..?

    Isus Lihardi 	        0.78 	Menerima
    Eri Sulfahmi 	         0.69 	Menerima
    Betri Yent 	          0.9 	Menerima
    Agusfi Yendra 	 0.88 	Menerima
    Syaiful S.T 	         0.31 	Tidak Menerima
    Dori Yulia Putri 	 0.77 	Menerima
    Rohani 	                 1.25 	Menerima
    Mega Sri Dahlia 	 1.13 	Menerima
    Jon Saputra 	         1.09 	Menerima
    Kartini 	                1.25 	Menerima
    

    gimana bentuk codingnya ya mas..mohon bantuannya mas.. terima kasih..
    wassalam..

    • Coba pakai COUNT mas di SQL Querynya, misal:

      SELECT COUNT(IF(kolom_3 = "Menerima", 1, NULL)) AS jml_menerima,
      	COUNT(IF(kolom_3 = "Tidak Menerima", 1, NULL)) AS jml_tidak_menerima
      FROM tabel
      GROUP BY kolom_3
  • kalau menhitung total absen gimana ya Gan, misalnya absen A jumlah pertemuannya 16x dia masuk hanya 15x nah script php n mysql gmn ya Gan,, jadi persen nantinya misalnya jumlah absen dosen A 90% gitu Gan,, tolong bantu saya Gan,, terima kasih

    • Itu tergantung skema bentuk tabelny seperti apa mbak….
      Biasanya seperti itu tinggal dihitung baris tabel absen saja berdasarkan ID dosen (menandakan kalau ybs absen), selanjutnya tinggal di bikin rasio dengan jumlah seharusnya dia masuk….

  • malam kak, kalau saya mau hitung total dari 2 record subtotal dibawah ini gimana ya script sql nya :

    id kode nama tanggal harga jumlah subtotal
    7 007 Fan Laptop 2018-02-15 350000 2 700000
    6 006 Flashdisk Adata 2018-02-14 140000 5 700000

    Terima kasih

  • mas mau nanya, jika saya mempunyai data base absen dengan nama tabel absen, terus saya ingin menghitung jumlah orang yang absen tersebut bagaimana ya caranya? ini berdasarkan tahun.

    cth data base nya.
    id I pengajar I kelas I tanggal I Materi I
    1 I tino I IPS 4 I 2016-02-01 I matematika I
    2 I tino I ips 5 I 2016-02-01 I matematika I
    3 I anto I ipa1 I 2016-02-03 I ppkn
    4 I tino I IPS 4 I 2016-03-01 I matematika I
    5 I tino I ips 5 I 2017-02-01 I matematika I
    6 I anto I ipa1 I 2017-02-03 I ppkn

    jumlah org yang absen di tahun 2016?
    jumlah org yg absen di tahun 2017 ?

    2016 I 2017 I 2018 I
    xxx I xxx I xxx I
    gmna gan caranya gan? terimakasih

  • Mas saya mau menjumlahkan data
    per 30 hari
    per 7 hari
    per 24 jam
    Bisa kasih tau koding html/php nya ? untuk di simpen di dashboard

  • kode | tanggal |
    001 | 2017-01-27 |
    002 | 2017-01-28 |
    003 | 2017-01-29 |
    004 | 2017-01-30 |
    005 | 2017-01-31 |
    006 | 2017-01-31 |
    007 | 2017-02-01 |
    008 | 2017-02-01 |
    009 | 2017-02-01 |
    010 | 2017-02-01 |
    Nah dari Data yang berdasarkan tanggal itu hasilnya
    Di dashboard kolom 1
    Hari ini contoh tanggal 2017-02-01
    ada input data 4 jadi hasil di dashboard itu 4 data tersebut

    Di dashboard kolom 2
    data yang akan ditampilkan itu per 7 hari
    contoh per 7 hari dari tanggal 28 Jan – 3 Feb
    Maka data yang tampilkan dari 002-010 jadi data yang tampil di dashboard itu 9

    Di dashboard kolom 3
    data yang akan ditampilkan itu perbulan
    jadi data yang tampilkan pada bulan ini itu baru 4 data yang tampil di dashboard

    • 1. Untuk yang pertama gunakan fungsi NOW(): WHERE tanggal = NOW();
      2. Yang kedua, gunakan operator between atau operator pembanding < dan >. Untuk nilai maksimal daan minimalnya, gunakan NOW() dan NOW() – INTEVL 7 DAY: WHERE tanggal BETWEEN NOW() – INTERVL 7 DAY AND NOW()
      3. Yang ketiga gunakan fungsi MONTH(): WHERE MONTH(tanggal) = MONTH(CURRENT_DATE())

  • 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

    Sy memiliki tabel kab_kota
    +-------------------------+
    | id_kabkot | nama_kabkot |
    +-------------------------+
    |      1.   | Kolaka.     |
    |      2.   | Bombana     |
    +-------------------------+
    
    kemudin tabel hasilsuara
    +----------------------------------------------------+
    | id_hasil | id_kabkot | paslon1 | paslon2 | paslon3 |
    +----------------------------------------------------+
    |   1      | 1         | 2       | 1       |  1      |
    |   2      | 1         | 2       | 2       |  2      |
    |   3      | 1         | 1       | 1       |  1      |
    |   4      | 2         | 2       | 1       |  1      |
    |   5      | 2         | 1       | 1       |  2      |
    +----------------------------------------------------+
    
    sy ingin menampilkan jumlah suara keseluruhan paslon tiap kabupaten kota,
    
    jadi seperti ini outputnya mas
    +--------------------------------------------+
    | nama_kabkot| paslon1 | paslon2 |  paslon3  |
    +--------------------------------------------+
    | Kolaka     | 5       | 4       |   4       |
    | Bombana    | 3       | 2       |   3       |
    +--------------------------------------------+
    

    Mohon bantuannya mas agar outputnya bisa seperti itu.

    • Waalaykumsalam, coba pakai query ini mas:

      SELECT nama_kabkota, SUM(paslon1) AS jml_paslon1, SUM(paslon2) AS jml_paslon2, SUM(paslon3) AS jml_paslon3
      FROM hasilsuara 
      LEFT JOIN kab_kota USING(id_kabkota)
      GROUP BY id_kabkota
  • Assalamuallaikum
    Pak ini saya ada project dan mendapat data dengan format header tabelnya

    |Departemen | Nama  | No ID Karyawan | Tgl/Waktu |
    Misalnya
    Office | Wahid | 1 | 28-Mar-18 7:54:23 AM |
    Office | Wahid | 1 | 28-Mar-18 5:01:49 PM |
    

    dan Output yang diinginkan

    |Departemen | Nama  | No ID Karyawan | Waktu Masuk | Waktu Keluar
    |Office     | Wahid | 1              | 7:54:23 AM  | 5:01:49 PM |
    

    Apakah tetap pake MIN(Tgl/Waktu) AS masuk MAX (Tgl/Waktu) as keluar from tabel group by nama kah pak? mengingat inputan data berupa tanggal/waktu?

    • Waalaykumsalam, iya mas, pakai GROUP BY nya ID Karyawan, jangan by nama. Karena kita akan menghitung per karyawan yang GROUP BY nya per karyawan, bukan per tanggal atau waktu

  • Assalamu’alaikum mas, mohon bantuannya, saya ingin menghitung data yang sama ( dari id_masuk ) berdasarkan dengan tanggal , untuk tabelnya seperti ini

    t_masuk

    +------------------------------------------------------------+
    | id_masuk | tgl_masuk  | jam_masuk |  foto_masuk  | gate_id |
    +-----------------------------------------------------------+
    | 1        | 29/03/2018 | 13:01     |   tes.jpg    | Pintu 1 |
    | 2        | 30/03/2018 | 14:01     |   tes.jpg    | Pintu 1 |
    | 3        | 30/03/2018 | 17:01     |   tes.jpg    | Pintu 2 |
    | 4        | 30/03/2018 | 18:01     |   tes.jpg    | Pintu 1 |
    +------------------------------------------------------------+
    

    t_keluar

    +----------------------------------------------------------------------------------------------------------------------------------+
    | no_kendaraan | jns_kendaraan  | tgl_keluar |  jam_keluar  | foto_keluar | type_transaksi | tarif | gate_id | id_masuk | id_login |
    +----------------------------------------------------------------------------------------------------------------------------------+
    | B1           | MOTOR          | 29/03/2018 |  13:15       | tes.jpg     | NORMAL         | 1000  |Pintu 1  | 1        | 1        |
    | B12          | MOTOR          | 30/03/2018 |  14:44       | tes.jpg     | NORMAL         | 1000  |Pintu 1  | 2        | 1        |
    | B123         | MOTOR          | 30/03/2018 |  17:09       | tes.jpg     | NORMAL         | 1000  |Pintu 1  | 3        | 1        |
    +----------------------------------------------------------------------------------------------------------------------------------+
    

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

    +-------------+
    | jml_id_msuk |
    +-------------+
    |     2       | 
    +-------------+
    

    Mohon bantuannya mas …

  • Assalamu’alaikum mas agus, mohon bantuannya
    saya mempunyai table sales_order dan purchase_order

    tabel po
    -id
    -kode_po
    -kode_item
    -qty
    -harga_beli

    table so
    -id
    -kode_so
    -kode_item
    -qty
    -harga_jual

    bagamana menghitung profitnya per so ?

  • harga_jual dikurangi harga_beli

    hasil yang di harpkan:
    kode produk, harga_beli, harga_jual, profit
    001, 10000, 15000, 5000
    002, 20000, 30000, 5000

    saat saya inner pasti hasilnya jadi duplikat
    missalkan

    tabel po
    kode_produk, harga_beli
    001, 1000

    table so
    kode_produk, harga_jual
    001, 1500
    001, 2000

    jadi pas saya tambah produk di so harga jual nya dinamis mas, bisa diganti2. gmna yah solusinya?

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

    Contoh tabelnya 
    id | id_user | kata | id_web | bobot
    dengan id adalah auto increment
    
    Contoh isinya
    1 | 1 | apple | 1 | 0.3
    2 | 1 | is    | 1 | 0.3
    3 | 1 | sweet | 1 | 0.3
    4 | 1 | can   | 2 | 0.16
    5 | 1 | you   | 2 | 0.16
    6 | 1 | give  | 2 | 0.16
    7 | 1 | me    | 2 | 0.16
    8 | 1 | apple | 2 | 0.16
    9 | 1 | gadget| 2 | 0.16
    

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

    id_user | kata  | bobot           | jumlah_web_yg_berisi_kata
    1       | apple | (0.5+0.16)=0.66 | 2
    1       | is    | 0.5             | 1
    1       | sweet | 0.5             | 1
    1       | can   | 0.16            | 1
    dst
    

    kira-kira bagaimana ya? Terima kasih banyak sebelumnya.
    Wassalamualaikum wr.wb.

  • Assalamualaikum. wr.wb
    Saya ingin menanyakan query seperti apa ya yang bisa digunakan untuk Tabel seperti yang saya inginkan ini

    Contoh tabelnya 
    id | Nama Kota |Jenis Kendaraan 
    
    Contoh isinya
    1 | Jakarta  | Mobil |
    1 | Jakarta  | Mobil |
    1 | Jakarta  | Motor |
    1 | Bengkulu | Mobil |
    1 | Bengkulu | Motor |
    

    kemudian saya ingin menjumlahkan Jenis kendaraan seperti dibawah ini

    Nama Kota   | Mobil    | Motor   |Jumlah
    Jakarta     | 2        | 1	 |   3
    Bengkulu    | 1        | 1       |   2
    

    dst
    seperti apa query nya yah Terima kasih banyak .
    Wassalamualaikum wr.wb.

    • Waalaykumsalam Wr. Wb. Coba ini mas:

      SELECT nama_kota
      , COUNT(IF(jenis_kendaraan = "Mobil", jenis_kendaraan, NULL)) AS Mobil
      , COUNT(IF(jenis_kendaraan = "Motor", jenis_kendaraan, NULL)) AS Motor
      FROM tabel
  • Assalamu’alaikum.. mau tanya mas.

    Saya ada bari tabel Seperti ini , nama tabel adalah “bakat”:

    id | Nama | Menari | Menyanyi | Melukis | Memasak|
    1 | A | 70 | 80 | 90 | 60 |

    Saya ingin menampilkan kolom field “menyanyi” karna nilai nya tertinggi ..
    kalo gitu query nya apa ya mas ?

    tolong di jawab ya mas ,terimakasih 🙂

    • Waalaykumsalam…

      Menurut saya tabelnya belum memenuhi kaidah normalisasi mas… seharusnya bentuk tabel nya seperti ini:

      Tabel: nilai_bakat
      id | id_siswa | id_bakat | nilai
      1  | 1        | 1        | 70
      2  | 1        | 2        | 80
      3  | 1        | 3        | 90
      4  | 1        | 4        | 60
      
      Tabel: bakat
      id_bakat | nama_bakat
      1        | Menari 
      2        | Menyanyi
      3        | Melukis
      4        | Memasak
      
      Tabel: siswa
      id_siswa | Nama
      1        | A
      

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

      SELECT nama_siswa, nama_bakat, MAX(nilai) as nilai_tertinggi 
      FROM nilai_bakat 
      LEFT JOIN bakat USING (id_bakat)
      LEFT JOIN siswa USING (id_siswa)
      WHERE id_siswa = 1

      Hasil:

      nama_siswa | nama_bakat | nilai_tertinggi
      A          | Menari     | 90
      

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

      SELECT Nama, MAX(nilai) AS nilai_tertinggi
      FROM
      (
      	SELECT Nama, Menari AS nilai FROM bakat WHERE Nama = "A"
      	UNION ALL 
      	SELECT Nama, Menyanyi FROM bakat WHERE Nama = "A"
      	UNION ALL 
      	SELECT Nama, Melukis FROM bakat WHERE Nama = "A"
      	UNION ALL 
      	SELECT Nama, Memasak FROM bakat WHERE Nama = "A"
      ) AS bakat

      Hasil:

      Nama | nilai_tertinggi
      A    | 90
      

      Namun perlu lagi mencari nilai tertinggi ada dibakat apa…

  • Assalamualaikum mas mau nnya,
    kami ada 3 tabel siswa, spp, tahunan,
    Kami mau sum dari dua tabel spp tahunan sesuai data sisiwa
    Hasil sum nya tidak sesuai hasil ny itu gmn y mas sql ny,

  • mas saya mw nanya
    nama|nilai
    a |3
    b |3
    c |2
    d |2
    e |5
    f |5
    nah yang mw dicari itu urutan angka nya mas.conoth untuk peringat satu dengan nilai lima yaitu 1+2/2=1.5. untuk peringkat dua dengan nilai 3 yaitu 3+4/2=3,5. untuk peringkat tiga dengan nilai dua yaitu 5+6/2=5.5.
    jadi tabel nya seperti ini
    a |3 |3.5
    b |3 |3.5
    c |2 |5.5
    d |2 |5.5
    e |5 |1.5
    f |5 | 1.5
    mas tlong blas ya.penting banget mas krna smntara lagi nyusun

  • Tabel Klaim
    =========================================
    | NIP | KodeKlaim | Tanggal Pencairan |
    =========================================
    |1001 | A | 12/02/2017 |
    |1001 | A | 23/08/2017 |
    |1001 | B | 02/04/2017 |
    |1002 | A | 08/03/2017 |
    |1002 | B | 02/06/2017 |
    |1002 | B | 02/09/2017 |
    |1001 | A | 12/02/2018 |
    |1001 | A | 23/01/2018 |
    |1001 | A | 21/02/2018 |
    |1001 | B | 02/04/2018 |
    |1001 | B | 02/03/2018 |
    |1002 | A | 08/03/2018 |
    |1002 | B | 02/05/2018 |
    |1002 | B | 02/04/2018 |

    Mohon Bantuannya Mas Gmna Koding pada Vb.net dgn hasil seperti ini ?
    =====================================================
    | NIP | Jmlh_Klaim_A | Jmlh_Klaim_B | Tahun |
    =====================================================
    | 1001 | 3 | 2 | 2018 |
    | 1002 | 1 | 2 | 2018 |

    • Coba pakai query ini mas….

      SELECT nip, COUNT(IF(KodeKlaim = "A", KodeKlaim, NULL)) AS Jmlh_Klaim_A
      , COUNT(IF(KodeKlaim = "B", KodeKlaim, NULL)) AS Jmlh_Klaim_B
      , YEAR(TanggalPencairan)
      FROM tabel
      GROUP BY NIP, YEAR(TanggalPencairan)
      
  • tabel anggota

    +------------+-------------------+--------------+
    | id_anggota | nama_anggota      | no_telp      |
    +------------+-------------------+--------------+
    | AN001      | Sulistianah       | 0858704575xx |
    | AN002      | Hartutik          | 0858706541xx |
    | AN003      | Basuki            | 0858706554xx |
    | AN004      | Samsudin Syafii   | 0858406541xx |
    | AN005      | Zuniati           | 0858706542xx |
    | AN006      | Sri Khumriatun    | 0858306544xx |
    | AN007      | Wahid Amrullah    | 0853506542xx |
    | AN008      | Zakiyatul Siyam   | 0828106543xx |
    | AN009      | Zaenal Abidin S.E | 0858206541xx |
    | AN010      | Eny Kusmayati     | 0838709541xx |
    | AN011      | Noor Hadi S.H     | 0858206514xx |
    | AN012      | rani sayang       | 0858706548xx |
    +------------+-------------------+--------------+
    

    tabel bayar angsuran

    +-------------------+---------------+---------------+------------+
    | id_bayar_angsuran | periode_bulan | periode_tahun | id_anggota |
    +-------------------+---------------+---------------+------------+
    | BY001             | Mei           | 2018          | AN001      |
    | BY002             | Mei           | 2018          | AN002      |
    +-------------------+---------------+---------------+------------+
    2 rows in set (0.00 sec)
    

    mas minta bantuannya dong bagaimana mencari anggota yang belum bayar pada bulan mei, terima kasih

    • Coba pakai join mbak

      SELECT a.id_anggota, nama_anggota, periode_bulan
      FROM anggota AS a
      LEFT JOIN (
      	SELECT * 
      	FROM bayar_angsuran 
      	WHERE periode_bulan = "Mei"
      ) AS angsuran USING(id_anggota)
      WHERE periode_bulan IS NULL
  • Gan, mau tanya…
    misalnya saya ingin memberi nomor urut dari data transaksi
    contoh..
    User ‘A’ 5 kali keluar masuk pintu yang menggunakan akses finger
    User ‘B’ 5 kali keluar masuk pintu yang menggunakan akses finger
    lalu ingin saya rekap data-data user tersebut sesuai urutan akses finger dari masing user diurutkan sesuai jam terakhir

    contoh User ‘A’ keluar masuk jam 08:30, 09.00, 09.30, 10.00, 11.30
    contoh User ‘B’ keluar masuk jam 08:35, 09.05, 09.35, 10.05, 11.35,

    hasil yang ingin terjadi

    User	Jam	Nomor Urut Keluar Masuk
    B	11.35	5
    A       11.30	5
    B       10.05	4
    A       10.00	4
    B       09.35	3
    A       09.30	3
    B       08.35	2
    A       08.30	2
    B       08.05	1
    A       08.00	1
    
  • Siang mas agus,

    kalau menggunakan ORDER BY Jam Desc, nanti dikolom ‘Nomor Urut Keluar Masuk’
    tidak seperti yang ditampilkan hasilnya jadi

    User Jam Nomor Urut Keluar Masuk
    B 11.35 1
    A 11.30 2
    B 10.05 3
    A 10.00 4
    B 09.35 5
    A 09.30 6
    B 08.35 7
    A 08.30 8
    B 08.05 9
    A 08.00 10

    Sedangkan yang ingin ditampilkan adalah…
    ketika ada data yang masuk 1 otomatis nomor urut 1
    lalu ketika ada data yang sama masuk lagi 3 otomatis nomor urut (terakhir +1)
    yang nanti jika jam masuk terakhir adalah nomor urut yang paling besar dari data yang masuk
    (data yang memiliki record lebih dari 1)

    Mohon pencerahanya pak…

    • Kalau seperti itu bisa pakai kolom auto increment mas, nanti tinggal di order by kolom auto increment tersebut secara descending…
      atau bisa pakai kolom timestamp untuk mencatat waktu masuknya, selanjutnya tinggal di order by kolom timestamp tersebut secara descending
      nomor urutnya tidak perlu di tulis di database, cukup ditampilkan di aplikasi saja…

  • Tanya mas.
    Sy pnya tabel

    DATA1   DATA2
    111         AAA
    111         AAA
    111         AAA
    111         BBB
    111         BBB
    222         AAA
    222         AAA
    222         BBB
    222         BBB
    222         BBB
    dst...
    

    Hasil yg sy inginkan

    DATA1  DATA2  JUMLAH
    111        AAA      3
    111        BBB      2
    222        AAA      2
    222        BBB      3
    dst...
    

    Trmksh sblmnya.

  • mysql> select * from dana_masuk;
    +---------------+---------------+---------------+----------------+----------+-------------+
    | id_dana_masuk | periode_bulan | periode_tahun | uraian         | jumlah   | id_kelompok |
    +---------------+---------------+---------------+----------------+----------+-------------+
    | DM001         | Mei           | 2018          | Dana Arisan    | 12000000 | KL001       |
    | DM002         | Mei           | 2018          | Dana Lelang    |  3800000 | KL001       |
    | DM003         | Mei           | 2018          | Dana Chas Back |   100000 | KL001       |
    +---------------+---------------+---------------+----------------+----------+-------------+
    3 rows in set (0.00 sec)
    
    mysql> select * from dana_keluar;
    +----------------+---------------+---------------+--------------+----------+-------------+
    | id_dana_keluar | periode_bulan | periode_tahun | uraian       | jumlah   | id_kelompok |
    +----------------+---------------+---------------+--------------+----------+-------------+
    | DK001          | Mei           | 2018          | Beli Motor   | 15000000 | KL001       |
    | DK002          | Mei           | 2018          | Asuransi     |   300000 | KL001       |
    | DK003          | Mei           | 2018          | Administrasi |   900000 | KL001       |
    | DK004          | Mei           | 2018          | Konsumsi     |   300000 | KL001       |
    +----------------+---------------+---------------+--------------+----------+-------------+
    4 rows in set (0.00 sec)
    

    Minta pencerahannya bang, bagaimana mengetahui saldo akhir dari tabel diatas,
    saldo akhir diperoleh dari total dana masuk dikurangi total dana keluar… mohon bantuannya

    • Itu bukannya tinggal di jumlahkan saja menggunakan SUM mas? yang tabel dana masuk dihitung totalnya kemudian dikurang total jumlah pada tabel dana_keluar, misal:

      SELECT total_masuk - total_keluar
      FROM (SELECT SUM(jumlah) AS total_masuk FROM tabel_masuk) AS masuk
      , (SELECT SUM(jumlah) AS total_keluar FROM tabel_keluar) AS keluar
  • tb_absen

    +-------------+----------------+--------------+------------+
    |id_absen     | nama_karyawan  | status_hadir |  tanggal   |
    +-------------+----------------+--------------+------------+
    | 1301        |  Jacky         |   Hadir      | 11/06/2018 |
    | 1302        | Brandon        |   Sakit      | 11/06/2018 |
    | 1303        | Christine      |   Absen      | 11/06/2018 |
    | 1301        | Jacky          |   Hadir      |  12/06/2018|            
    | 1302        | Brandon        |   Izin       | 12/06/2018 |
    |1303         | Christine      |  Absen       | 12/06/2018 |
    | 1301        | Jacky          |   Hadir      |  13/06/2018|            
    | 1302        | Brandon        |   Sakit      | 13/06/2018 |
    |1303         | Christine      |  Absen       | 13/06/2018 |
    +-------------+----------------+--------------+------------+
    
    _________________Sanksi Disiplin_________________
    ***Disiplin A***(3 hari keatas)
    ***Disiplin B***(7 hari keatas)
    ***Disiplin A + Disiplin B***(30 hari keatas)
    ___________Output_________________
    
    +-----+----------------+-------+---------+---------+--------+-----------------+
    |No   | nama_karyawan  | Hadir |  Sakit  | Izin    | Absen  | Sanksi Disiplin |
    +-----+----------------+-------+---------+---------+--------+-----------------+
    | 1   |  Jacky         |   3   |   0     |  0      |  0     |                 |
    | 2   | Brandon        |   0   |   2     |   1     |  0     |                 |
    | 3   | Christine      |   0   |  0      |   0     |  3     |  Disiplin A     |
    +-----+----------------+-------+---------+---------+--------+-----------------+
    

    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.

    • Untuk sanksinya bisa menggunakan interval mas cuman masalah nya, acuan untuk menghitung tiga hari keatas dari mana?

      Untuk mengganti 0, bisa dicoba dengan mengganti NULL dengan “-“

  • Assalamualaikum mas mohon bantuannya saya punya tabel yg isi ny data mahasiswaa
    —————————————————-
    id tahun nama prodi
    1 2010 A 1
    2 2010 B 1
    3 2010 C 1
    4 2010 D 2
    5 2011 E 2
    6 2012 F 1
    7 2012 G 3
    8 2011 H 3
    9 2011 I 1
    10 2010 J 2

    nah saya ingin menampilkan jumlah mahasiswa yang di group per tahun dan di group per prodi, mohon pencerahannya mas

  • mas mau tanya cara menampilkan nim, nama mahasiswa, nama matakuliah, jumlah sks, nilai total (nilai absensi + nilai kuis + nilai uts + nilai uas) dan menampilkan nimnama mahasiswa, jumlah total sks yang sudah ditempuh

    dengan tabel
    pk nama(nama, jeniskelamin, tgllahir)
    pk kdnilai(kdpengambilan, nilaiabsensi, nilaikuis, nilaiuts, nilaiuas)
    tb pengambilanMK() pk tbpengambilan, pk nama, pk kdMK, semester, tahunajaran)
    pk tbMK (namaMK, namadosen, jumlahsks)

  • min, query untuk menampilkan umur dengan format tahun, bulan dan hari bagaimana ya?
    misalnya, 20 tahun 4 bulan 10 hari. Mohon bantuannya

  • idstok | idobat | kadaluwarsa |jumlahObat
    1 | 1 | 2018/01/02 |12
    2 | 2 | 2019/01/05 |12
    3 | 1 | 2020/01/03 |13
    4 | 1 | 2021/09/01 |10
    5 | 2 | 2020/08/08 |9

    idorder | idobat | jumlahOrder |
    1 | 1 | 3
    2 | 1 | 14
    3 | 2 | 13

    Man tanya mas, biar ada database ketiga atau outpunya dinamis, kalau2 jumlahOrder-nya atau jumlahObat-nya diedit, outputnya juga dinamis kurang lebih biar seperti ini :

    idobat | kadaluwarsa | sisaObat
    1 | 2020/01/03 | 8
    1 | 2021/09/01 | 10
    2 | 2020/08/08 | 8

    Mohon bantuan dan bimbingannya.

  • +----------------+----------------+
    | nama pemesan   | harga          |
    +----------------+----------------+
    | A              | 99             |
    | A              | 99             |
    | B              | 11             |
    | B              | 22             |
    | C              | 12             |
    +----------------+----------------+

    mas kasih tau donk caranya menghitung total harga dari banyaknya baris nama yang sama.

    • Coba pakai query ini mas
      SELECT SUM(harga)
      FROM table
      WHERE nama_pemesan IN (
      SELECT nama_pemesan
      FROM tabel
      WHERE COUNT(nama_pemesan) > 1
      GROUP BY nama_pemesan
      )

  • halo mas agus saya mau tanya soal query mysql
    saya punya kasus misal kalo untuk menjumlahkan sprti hasil di bawah querynya gimanaya? soalnya udah coba langsung di select hanya nampil data tanpa di jumlahkan, trus langsung di sum tp cuma n ampil hasilnya langsung tanpa rincian jumlah produksi..
    mhon bimbingannya mas agus trimakasih
    +——+——————+————————–+
    | id | tanggal | jumlah produksi |
    +——+——————+————————–+
    | a1 |2018/08/05 | 7 |
    | | 2018/08/05 | 3 |
    +——+——————+————————–+
    | total | 10 |
    +————————–+————————–+

  • 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
    ————————+————-+—————————–+———-

  • kalau menghitung jumlah kolom, bagaiaman? contoh terdapat kolom id, nama, alamat, tempat_lahir, tanggal_lahir, nomer_hp. jadi total kolom nya 6

  • Mas kalo mau hitung jumlah data (misal ada kategori pakaian, mimuman, makanan) mau hitung berapa jumlah makanan, berapa jumlah pakian, berapa jumlah minuman. dan di tampilkan ke web html dan php gimana ya

  • NIK status tanggal
    170309 6 2018-05-07
    712030 2 2018-06-29
    131004 3 2018-06-29
    130404 4 2018-06-21
    141203 5 2018-07-03
    150402 4 2018-07-06
    180510 3 2018-07-02
    180301 2 2018-07-10
    180606 2 2018-07-11
    180404 6 2018-07-26
    160803 6 2018-10-27
    100101 1 2018-07-26
    170603 6 2018-10-10

    mas saya punya tabel diatas yang isinya gitu,
    kalo mau count (nik) tapi berdasarkan distance (bulan dan tahun)
    misal hasilnya
    bln_thn jumlah
    201810 2
    201808 5

    terimakasih mas sebelumnya

  • Struktur Tabel d_item :

    kdoutput|kdsouptut|kdkmpnen|kdskmpnen|kdakun|noitem|vol1|vol2|vol3|vol4|hargasat|jumlah

    PK (kdoutput|kdsouptut|kdkmpnen|kdskmpnen|kdakun|noitem)

    untuk noitem autoincrement tetapi dalam setiap (kdoutput|kdsouptut|kdkmpnen|kdskmpnen|kdakun)
    jadi ketika kdakun berubah maka akan dimulai dari 1 lagi

    jumlah merupakan perkalian dari |vol1|vol2|vol3|vol4| kali hargasat sedangkan vol1 – vol 4 minimal 1 saja yang terisi

    bagiamana menentukan kolom jumlah ketika mengisi vol1 – vol4 bisa langsung otomatis terisi

    Terimakasih

  • gan misal kondisi kayak gini .. sy punya 4 tabel seperti ini..
    nah sy ingin mencari average pada column nilai untuk seleruh table dibawah

    tabel 1 mahasiswa
    no nama nim nilai
    1 usman 2014 3
    2 adina 2014 4
    3 firda 2014 4

    tabel 2 mahasiswa1
    no nama nim nilai
    1 alexa 2014 3
    2 nirwa 2014 2
    3 koko 2014 4

    tabel 3 mahasiswa2
    no nama nim nilai
    1 indah 2014 4
    2 adam 2014 1
    3 somad 2014 3

    tabel 1 mahasiswa3
    no nama nim nilai
    1 pandu 2014 3
    2 mizwa 2014 4
    3 anis 2014 4

    • Gunakan UNION mas, misal:

      SELECT AVG(nilai) FROM
      (
      	SELECT FROM tabel_1
      	UNION ALL 
      	SELECT nilai FROM tabel_2
      	UNION ALL 
      	SELECT nilai FROM tabel_3
      	UNION ALL 
      	SELECT nilai FROM tabel_4
      )
  • 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 |
    +—-+————+————+————–+

  • mas saya ingin menghitung misalnya ada 9 cpu 9 monitor dan 9 mouse, itu kondisinya ada 3 baik 3 sedang dan 3 buruk. bagaimana menjumlahkan masing masing kondisi ke dalam tabel. terima kasih

  • mas agus maaaf melenceng dari teorinya,, kalo untuk mencari nilai terbesar dalam 2 tabel database bagaimana ya? tapi nombernya berlanjut..

    misal di tabel “in” ada nomor id no 001, di tabel “out” ada id no 002,, nah selanjutnya saya mau masukan ke tabel “in” idnya berlanjut jadi 003?

    bantuannya mas,, trimakasih

  • 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.

  • Mas bagaiman cara buat scrip php untuk mengelompokan usia berdasarkan kategori balita, anak, desawa serta berdasarkan nama desa. Tks Mas

  • 1Selamat pagi mas Agus, saya mendapatkan project membuat sistem penilaian karyawan , didalamnya ada penilai yang terdiri dari 5 orang dan 1 orang yang di nilai, penilaian tersebut terdiri atas beberapa aspek penilaian, kemudian saya harus mendapatkan hasil akhir dari 1 orang tersebut berupa nilai yang di ambil dari aspek yang dinilai dan saran yang diberikan oleh penilai, dan setiap orang mendapatkan nilainya masing masing. mohon bantuannya bagaimana query nya

    • Itu harus dirumuskan terlebih dahulu formulanya dalam bentuk operasi aritmatika mbak, selanjutnya jika bisa di kerjakan via SQL dikerjakan di query sql, jika tidak bisa lewat coding dari sisi aplikasi

  • assalammualaikum mas agus, disini saya mempunyai table nama customer dan phone customer, nah di phone customer itu ada isi nomor hp, disini saya mau nanya gimana cara menghitung jumlah nomor hp yang ada di table phone customer ya mas.. terima kasih

    # Nama Customer Phone Customer Jumlah
    9 Muhammad Arrahman Damara 081316628979
    10 Muhammad Arrahman Damara 081316628979
    13 Muhammad Arrahman Damara 081316628979
    17 Muhammad Arrahman Damara 081316628979
    18 Muhammad Arrahman Damara 081316628979
    24 Muhammad Arrahman Damara 081316628979
    28 Zuherman 081316628979
    30 Muhammad Arrahman Damara 081316628979

  • pak bisa bantu saya mengerjakan soal ini:
    tabel tiket.
    kode|perjalanan|berangkat|Tiba|Harga|persediaan|
    ditanya: perbaharui field Tiba pada tabel tiket: Berangkat ditambah lama perjalanan,
    jika tujuan ke surabaya , lama perjalanan 13 jam. bagaimana query nya?
    terimakasih.

  • Selamat Sore Mas Agus, maaf Mas ini contoh tabelnya
    tbl_pasien
    +——-+———–+———–+——+——–+———-+
    | nrm | nm_pasien | tgl_lahir | umur | jenkel | id_dusun |
    +—–+———–+———–+——+——–+———-+
    |P-001|Herlin |1992-02-03 | 27 | wanita | 2 |
    |P-002|Hamid |1990-04-07 | 28 | pria | 3 |
    |P-003|Handoko |1986-07-08 | 32 | pria | 2 |
    |P-004|Yanti |1979-01-09 | 39 | wanita | 1 |
    +——-+———–+———–+——+——–+———-+

    tb_dusun
    +———+—————+
    |id_dusun | nm_dusun |
    +———+—————+
    | 1 | Sinduharjo |
    | 2 | Sardonoharjo |
    | 3 | Minomartani |
    +———+—————+

  • selamat sore Mas Agus, Mas pencarian Umur berdasarkan kriteria balita, anak, remaja, dewasa, lansia menurut masing-masing dusun Mas

    jadi hasilnya seperti tabbel di bawah ini;

    +———–———-+———–+———+———–+————-+———-+——–+
    | nm_dusun | balita | anak | remaja | dewasa | lansia | Total |
    +———–———-+———–+———+———–+————-+———-+——–+
    | Sinduharjo | 3 | 4 | 7 | 4 | 8 | 26 |
    | Sardonoharjo | 2 | 7 | 8 | 4 | 5 | 26 |
    | Minomartani | 5 | 3 | 4 | 8 | 6 | 26 |
    +———–———-+———–+———+———–+————-+———-+——–+
    | | 10 | 14 | 19 | 16 | 19 | 78 |
    +———–———-+———–+———+———–+————-+———-+——–+

    scripnya seperti apa ya Mas. Tks Mas Agus

  • Mas Agus maaf dari tabel yg udah kirim itu menampilkan
    Untuk Dusun Sinduharjo
    Balita yg usia 0 sd 1 tahun itu sebanyak 3 orang,
    Anak yg usia 5 sd 12 tahun 4 orang,
    Remaja yg usia 13 sd 16 tahun 7 orang,
    Dewasa yg usia 17 sd 50 tahun 4 orang,
    Lansia yg usia 51 sd 70 tahun 8 orang dst,,,

    itu Mas Agus makdsudnya

    • Coba menggunakan COUNT IF mas, seperti di artikel diatas,

      SELECT COUNT(IF(usia>=0 AND usia<=1, usia, NULL)) AS balita,
      	COUNT(IF(usia>=5 AND usia<=12, usia, NULL)) AS anak
      FROM tabel
      GROUP BY wilayah
  • Selamat pagi Mas Agus, maaf Mas sy mau nanya lagi ni, masih terkait scrip ini
    SELECT COUNT(IF(usia>=0 AND usia=5 AND usia<=12, usia, NULL)) AS anak
    FROM tabel
    GROUP BY wilayah.

    andai kita mau tambahkan : per jenis kelamin pada scrip ini bagaimana ya,
    sehingga di tabel terbaca balita berjenis kelamin laki dan perempuan, anak berjenis kelamin laki dan perempuan dst,,, itu bagaimana ya Mas

    • Coba ditambahkan jenis kelamin mas:
      SELECT COUNT(IF(usia>=0 AND usia=5 AND usia<=12 AND jenis_kelamin = "L", usia, NULL)) AS anak_lk , COUNT(IF(usia>=0 AND usia=5 AND usia<=12 AND jenis_kelamin = "P", usia, NULL)) AS anak_pr

  • selamat pagi dan terima kasih Mas Agus! jurusnya ampuh sekali,,, semoga Allah menambah ilmu terus buat Mas biar bisa berbagi buat semua orang.

  • Selamat pagi Mas Agus, Mas kalau kita mau buat notifikasi penambahan pasien bagaimana ya?, misal halaman pertama kita tambah pasien, terus di halaman kedua ada notifikasi secara otomatis muncul.
    untuk scrip-nya bagaimana ya mas?. Terima kasih Mas Agus

  • Terimakasih ilmunya, mas kalau menghitung rata-rata dengan banyak field gman caranya ini tabelnya:

    id_nilai|nis|id_mapel|uh1|uh2|uh3|uh4|uh5|rata-rata-UH|n1|n2|n2|rata-rata-nilai|
    bagaimana caranya menampilkan rata2 uh dan rata-rata nilai

  • mau tanya mas, misal punya data tabel dengan nama karyawan yg isinya sbb:

    nama jenjang
    ——– ——–
    amir AA
    bedi AA
    cindy AA
    dian AA
    amir L
    cindy L
    dian L
    dian LK

    yg saya tanyakan bagaimana jika perhitungannya dibuat menjadi :

    AA =1
    L =2
    LK =1

    data AA ketika dia menjadi L masih tetap ada dan begitu juga data L masih ada ketika sudah menjadi LK
    tetapi diperhitungan berkurang ketika AA menjadi L dan L juga berkurang ketika sudah menjadi LK

    mohom pencerahannya bagaimana query mysql nya

    • Saya tidak paham bagian ini mas “data AA ketika dia menjadi L masih tetap ada dan begitu juga data L masih ada ketika sudah menjadi LK
      tetapi diperhitungan berkurang ketika AA menjadi L dan L juga berkurang ketika sudah menjadi LK”

  • Permisi, saya mau bertanya bagaimana cara menjumlahkan beberapa field di database menggunakan codeigniter. mis,
    idcabang | contoh 1 | contoh 2| contoh 3 | contoh 4 | Jumlah
    121212 40 22 44 68

    yg dijumlahkan hanya contoh 1, 2 ,3 dan 4. kemudian dibagian field jumlah otomatis terjumlahkan. Mohon pencerahannya. Terima kasih

  • Numpang tanya mas, saya punya tabel

    +-------------------+---------------+---------------+------------+
    | id_bayar	   | no_pend       | jurusan       | jml_byr    |
    +-------------------+---------------+---------------+------------+
    | BY001             | 001/tav/2019  | tav           | 2000000    |
    | BY002             | 002/tokr/2019 | tokr          | 1500000    |
    | BY003             | 001/tav/2019  | tav           | 500000     |
    | BY004             | 002/tokr/2019 | tokr          | 500000     |
    | BY005             | 003/tsm/2019  | tsm           | 2500000    |
    | BY006             | 004/tav/2019  | tav           | 1500000    |
    +-------------------+---------------+---------------+------------+
    

    Bagaimana untuk mencari jumlah yang sudah membayar setiap jurusan. Hasil yg diharapkan seperi ini

    +------------------+--------+
    | jurusan	   | jumlah |
    +------------------+--------+
    | tav              | 2      |
    | tokr             | 1      |
    | tsm              | 1      |
    +------------------+--------+
    

    Demikian terimakasih atas penjelasannnya.

  • assalamualikum mas. mau tanya giman cara menghitung total harga pembelian tiket kereta api dengan aplikasi cmd
    .trmksh

  • Assalamu’alaikum maz, mu tanya bagaimana menghitung banyaknya (COUNT) kategori yang dipanggil dari 2 tabel. sya coba seperti ini hasilnya kurang tepat. mhon pencerahannya:
    $sql = mysqli_query($koneksi,
    “SELECT kategori.*,
    (SELECT COUNT(*) FROM barang,produk WHERE barang.id_kategori=kategori.id_kategori
    OR produk.id_kategori=kategori.id_kategori) As qty_barang
    FROM kategori ORDER BY ‘id_kategori'”);
    while ($tampil = mysqli_fetch_array($sql)) {

  • mas boleh tanya? kalau saya mau ambil ‘status’ terakhir untuk bulan tertentu yg mau d ambil laporannya , sperti apa ya

    tabel:
    |id_lap|id_pegawai|id_subsupplier | tgl |status|
    1 1 1 2019/5/1 aktif
    2 2 2 2019/5/1 nonaktif
    3 3 1 2019/5/2 nonaktif
    4 4 1 2019/5/2 aktif
    5 2 2 2019/5/6 nonaktif
    6 1 1 2019/5/7 nonaktif
    7 4 1 2019/5/7 aktif
    8 3 2 2019/5/8 nonaktif
    9 5 1 2019/5/8 nonaktif

    jadi saya ingin hitung jumlah pegawai sub_supplier, pada bulan itu,

    hasil y
    |id_sub| jml_aktif| jml_nonaktif|

    • coba pakai COUNTIF:

      SELECT COUNTIF(status = "aktif, id_subsupplier, null) as aktif
      	, COUNTIF(status = "nonaktif, id_subsupplier, null) as non_aktif
      FROM table
      GROUP BY id_subsupplier
  • Mas, mau nanya, kalo misalkan saya mau hitung total harga di satu bulan tertentu yang diambil dari 2 tabel

    tabel 1

    +——————-+—————+—————+————+
    | id | tgl | id_cust | plat_mtr |
    +——————-+—————+—————+————+
    | 1 | 2019-01-01 | 1 | B 4 AAA |
    | 2 | 2019-05-03 | 3 | D 1 FFF |
    | 3 | 2019-06-01 | 4 | A 5 CCC |
    | 4 | 2019-06-11 | 3 | D 1 FFF |
    +——————-+—————+—————+————+

    tabel 2

    +——————-+—————+—————+————+
    | plat_mtr | merk | harga sewa |
    +——————-+—————+—————+————+
    |B 4 AAA | Yama | 300000
    |D 1 FFF | Hond | 350000
    | A 5 CCC | Kawas | 450000
    +——————-+—————+—————+————+

  • 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

  • Kalau lngsilung di max hasilx mendapatkan nilai yg tertinggi mas.. yg ad di mslh sya, mengetahui hasil max dri hsil sum berdasarkan pengelompokan nidn per id angket mas

  • 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

  • Kak mau tanya,, saya punya tabel data transaksi, dimana isi field nya yaitu :
    | ID | Data_Transaksi |
    Nah contoh :

    +___________________________________________+
    | ID | Data_Transaksi |
    +———————————————————–+
    | 1 | Deterjen, Sampo, Odol, Sikat |
    +———————————————————–+
    | 2 | Sabun, Sampo, Minyak Goreng |
    +———————————————————–+
    | 3 | Sampo, Pampers, Odol, Pewangi|
    +———————————————————–+

    Yang mau dicari dari semua tabel yaitu jumlah barangnya,, misal : itukan nama sampo ada 3, Odol ada 2, dll..
    caranya gimana ya kak ?

  • Pak Mau Tanya Gimana Cara Menghitung data yang ada di dalam field RUANGAN dan untuk mengetahui Ruangan B2 yang nilai angka 1 berapa dan yang 0 berapa ?
    | id | RUANGAN| NAMA | ANGKA |
    +———–———-+——–—+————+
    | 1 | B2 | NN01 | 1 |
    | 2 | B2 | NN02 | 1 |
    | 3 | B2 | NN03 | 0 |
    | 4 | B1 | NN04 | 1 |

    SELECT COUNT(*) AS NAMA From Nama Tabel WHERE field=1′

    • Coba mas:
      SELECT COUNT(*) AS NAMA From Tabel WHERE angka = 1
      SELECT COUNT(*) AS NAMA From Tabel WHERE angka = 0

      atau

      SELECT COUNT(IF(angka=1, 1, NULL)) AS angka_1
      SELECT COUNT(IF(angka=0, 1, NULL)) AS angka_0
      From Tabel WHERE angka = 1

  • untuk mengetahui Ruangan B2 yang nilainya 1 query nya bagaimana
    SELECT COUNT(RUANGAN) AS RUANGAN From TABEL WHERE RUANGAN=’B2′
    pakai ini yang keluar data RUANGAN B2 jumlah 3
    SELECT count(NILAI) AS NILAI FROM TABEL WHERE NILAI = ‘1’
    pakai ini semua nilai 1 muncul jumlah =3

    yang mau saya filter hanya Angka 1 dari nama ruangan B2
    hasil nya yang keluar 2
    mohon bantuannya pak makasih

  • | id | NILAI A | NILAI B | NILAI C|
    +———–———-+——–—+————+
    | 1 | 1 | 0 | 1 |
    | 2 | 1 | 0 | 1 |
    | 3 | 0 | 0 | 0 |
    | 4 | 1 |1 | 0 |
    |__________________________________|
    |JML|3 | 1 |2 |

    cara menjumahkan angka satu yang ada disetiap filed yang berada pada tabel seperti contoh diatas
    $query = “SELECT COUNT (*) AS nilai_A FROM nama tabel WHERE nilai_A= ‘1’”;

    cara meletakan jumlah di bawah sendiri

    mohon bantuannya

  • tabel data cs
    no_reg | nama_px| tanggal|
    2323 | nadin| 2019-8-24|
    2324 | rini | 2019-8-24|

    tabel Mater_pemeriksaan
    kode_pemeriksaan | nama_pemeriksaan | parent_kode | tarif |
    H01 |Hematologi | H01 | 0 |
    H01001 | Hemaglobin | H01001 |15000 |
    H02002 | Eritrosit | H01002 |6000 |
    IM01 | Imonologi | IM01 | 0 |
    IM01001 |TSH | IM01001 | 15500 |
    KD01 | Kimia Darah | KD01 | 0 |
    KD01001 | Glukosa | KD01001 | 15000|

    tabel pemeriksaan_pasien
    kode_pp | no_reg | kode_pemeriksaan|
    1 |2323 | H01001 |
    2 |2323 | H01002 |
    3 |2324 |H01001 |
    4 |2324 |IM01001 |
    5 |2324 |KD01001 |

    cara menghitung totalnya keseluruhan klo ngitungnya sesuai tgl,buat ngitung harian,atau mingguan?
    mohon bantuannya pak

  • mas gimana cara menghitung nilai inputan baru dengan kolom yg sama berdasarkan nilai pada setiap kolom

    tabel penilaian

    |n_absensi | n_kinerja | n_etika | n_masa_kerja | hasil |
    | 1 | 3 | 5 | 7 | |

  • kita mau manggil data pemeriksaan pasien perminggu dengan tanggal, hasil datanya akan mucul dan total tarif pemeriksaan yg didapat dalam 1 minggu terhitung

    no| nama_px | tanggal |

    total : ……

  • 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

  • assalamualaikum mas,

    saya punya data penjualan seperti ini :

    no.req | nama | usia | jenis_treatment | harga
    
    012 | nana | 12 tahun | Komplit Baby | Rp.150.000
    013 | rio  | 15 tahun | Komplit Baby | Rp.150.000
    014 | uli  | 13 tahun | Komplit Kids | Rp.160.000
    015 | budi | 9 tahun  | Massage Baby | Rp.60.000
    016 | fana | 11 tahun | Massage Kids | Rp.60.000
    017 | lala | 10 tahun | Massage Kids | Rp.60.000
    

    saya mau hasil nya seperti peringkat mas, treatment mana yang paling sering dipilih
    seperti berdasarkan jenis_tretment:

    peringkat    | jenis_treatment  | persentase
    1            | komplit baby     | 40%
    2            | massage kids     | 30%
    3            | Komplit kids     | 20%
    4            | massage baby     | 10%
    

    terimakasih mas

    • Itu agak kompleks mas jika ingin diselesaikan dalam satu query, misal:

      SELECT jenis_treatment
      	, ROUND(harga / (SELECT SUM(harga) FROM tabel) * 100 AS persentase
      FROM (SELECT jenis_treatment
      	, SUM(harga) as harga
      	FROM tabel
      	GROUP BY jenis_treatment
      ) as tabel

      Jika ingin menambahkan rangking, bisa menambahkan subquery lagi

  • assalamualaikum, mohon bantuan mas agus, saya ada database :

    | namabarang | hargajual1 | harga jual2 | hargajual3 | qty1 | qty2 | qty3 |

    | roti bakar AA | 10000 | 9500 | 9000 | 1 | 5 | 10 |
    | selai coklat | 15000 | 14500 | 14000 | 1 | 7 | 13 |

    kemudian sy ingin menampilkan harga jual di program sesuai dengan input kuantiti yg saya masukan.

    contoh : saya memasukan angka 7 di kolom kuantiti pada namabarang roti bakar AA maka muncul harga jual 9000, kl sy masukan angka 4 maka muncul harga jualnya 9500,

    begitu jg kl sy masukan angka 8 pada nama barang selai coklat maka muncul harga jual 14000, kl angka 5 maka muncul harga 14500.

    harga bertingkat gitu mas,
    jd mohon bantuan sscriptny mas

    • – Pertama desain tabelnya belum normal mas, perlu normalisasi
      – Jika tetap dengan bentuk tabel seperti itu, maka bisa menggunakan ajax, sehingga ketika dimasukkan angka, misal angka 7, maka di ambil data kolom harga jual2

  • Mas klw sya mau mencari data karyawan yang gk masuk hari ini dan tidak masuk sudah lebih dari 2 hari berdasarkan jam scan_masuk dan scan_pulang yang (00:00) itu gmna ya

    id_kehadiran,emp_no,nik,nama,auto_assign,tanggal,jam_kerja,jam_masuk,jam_pulang,scan_masuk,scan_pulang

    Terimakasih

    • Untuk yang hari ini tinggal diquery aja mas, jika tidak ada di tabel berarti tidak masuk
      Untuk yang lebih dari dua hari berturut, juga bisa dicek dengan cara yang sama tapi untuk dua hari berturut turut

  • Pagi mas Agus,

    saya mau tanya kalau ada pertanyaan seperti ini,

    Manajer pemasaran Northwind enterprise ingin melaporkan seluruh permintaan pembelian

    a. tampilkan nama pelanggan, kode permintaan dan tanggal permintaan

    terimaksih sebelumnya

  • 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

  • id|kode |nama |stok_awal |status | tgl |jumlah |saldo_akhir
    182 | | | |
    2 |AR-ACP | ACP1220 | |Keluar |12/13/2019 | -1 |169
    2 |AR-ACP | ACP1220 | – |Keluar |12/10/2019 | -9 |170
    2 |AR-ACP | ACP1220 | – |Keluar |12/9/2019 | -3 |179

    Kalau nominal stok awal yang muncul 182 (diatas aza) seterusnya null bagaimana mas Querynya. 🙂

  • kak kalau misalnya seperti 1 tabel bank darah lalu outputnya tiap2 golongan darahnya..
    misal tabel stok darah
    No | Nama | Jk | Golongan Darah
    1 | a | L | A
    2 | b | p| A
    3 | c | L | B
    4 | d | L | A
    5 | e | p | AB
    6 | f | p| AB
    7 | g | p | O
    8 | h | L | B
    9 | i | p | O
    10 | j | L | A

    Hasilnya :

    Golongan Darah | jmlh darah
    A | 4
    B | 2
    AB | 2
    O | 2

    contohnya seperti ini kak hasil dari 1 tabel bank darahnya gmnya yh..?, terimakasih kak..

  • mas mau nnya pas sya buat query ada salah satu coloum yang berubah huruh nya (huruf kanji) saat di group by itu kenapa ya?

  • Saya memiliki tabel sebagai berikut:

    ID_host | ID_koordinat |nama_jalan | data_saluran

    Bagaimana cara mengambil semua id_koordinat yang memiliki 10 data saja atau 20 data saja?

    ID_host sebagai PK sedangkan ID_koordinat sebagai FK

  • Mas minta tolong, sya punya kasus seperti ini
    SELECT PEGAWAI,
    CASE
    WHEN tbl_income.JUMLAH >= tbl_target.T_100 THEN ‘3000000’
    WHEN tbl_income.JUMLAH >= tbl_target.T_90 THEN ‘2700000’
    WHEN tbl_income.JUMLAH >= tbl_target.T_75 THEN ‘2250000’
    WHEN tbl_income.JUMLAH >= tbl_target.T_60 THEN ‘1800000’
    WHEN tbl_income.JUMLAH >= tbl_target.T_50 THEN ‘1500000’
    WHEN tbl_income.JUMLAH < tbl_target.T_50 THEN '0' END AS GAJI FROM ……

    Ketika data di query berbagai macam gaji,
    yang saya tanyakan ketika di print hasil gajinya,, saya pengen menghilangkan gaji yang 0 tersebut,
    karena ketika saya menghilangkan WHEN tbl_income.JUMLAH < tbl_target.T_50 THEN '0' tetep muncul gaji = 0

    sekian mas problem saya, semoga di baca dan mendapat solusinya, aminnn

  • mas mau tanya. untuk menampilkan jumlah pegawai pns dan jumlah pegawai non pns dari database
    nama | jenis
    A | PNS
    B |NON PNS
    C | PNS

    hasil
    PNS| Non PNS
    2 | 1
    menggunakan query yang gimana ya?

    • Coba menggunakan COUNT IF seperti tutorial diatas mas, bisa dicoba

      SELECT COUNT(IF(jenis = "PNS", nama, NULL)) AS pns
      	, COUNT(IF(jenis = "NON PNS", nama, NULL)) AS non_pns
      FROM tabel
      GROUP BY jenis
  • bang saya punya 2 tabel bang
    Tabel data_rekap
    id_rekap | id_kecamatan | total_laki | total_perempuan
    1 1 123 123
    2 1 321 321
    3 2 123 123

    tabel data_kecamatan
    id_kecamatan | nama_kecamatan
    1 A
    2 B

    pertanyaan gimana caranya untuk menghitung jumlah laki laki dan jumlah perempuan berdasarkan id_kecamatan???

  • Pak, saya punya
    tabel kelas berisi kd_kelas, kapasitas, dan nidn
    tabel registrasi berisi kd_registrasi, kd_kelas, npm
    tabel dosen berisi nidn, nama_dosen, password
    tabel mahasiswa berisi npm, nama, jurusan

    Saya membuat projek untuk registrasi kelas, kapasitas 1 nidn hanya 8 mahasiswa
    Kira-kira models.php dan controllores.php nya seperti apa, pak? Terimakasih seblumny…

  • Pak mohon bantuannya, kalau

    SELECT SUM( nilai_sensor ) AS jml
    FROM sensor_value
    WHERE idsensor =7
    AND tgl = DATE( NOW( ) )

    –digunakan untuk menghitung jumlah total nilai yang dihasilkan dari id sensor 7 dalam satu hari,
    lalu misalkan akan dijumlahkan lagi untuk nilai total dalam satu minggu terakhir terhitung dari tgl hari ini bagaimana caranya

  • Mohon bantuannya,

    select distinct e1.manager_id, e2.last_name as nama_manager,
    (select count(employee_id) from employees e
    where e.manager_id = e1.manager_id group by manager_id)as jumlah_bawahan
    from employees e1
    join employees e2 on e1.manager_id = e2.employee_id
    order by e1.manager_id;

    MANAGER_ID NAMA_MANAGER JUMLAH_BAWAHAN
    ———- ————————- ————–
    100 King 14
    101 Kochhar 5
    102 De Haan 1
    103 Hunold 4
    108 Greenberg 5
    114 Raphaely 5
    120 Weiss 8
    121 Fripp 8
    122 Kaufling 8
    123 Vollman 8
    124 Mourgos 8

    MANAGER_ID NAMA_MANAGER JUMLAH_BAWAHAN
    ———- ————————- ————–
    145 Russell 6
    146 Partners 6
    147 Errazuriz 6
    148 Cambrault 6
    149 Zlotkey 6
    201 Hartstein 1
    205 Higgins 1

    Saya mau tambah Case agar bisa mengkategorikan berdasarkarkan jumlah bawahannya

  • mas agus, HELP me haha
    saya punya table tanggal yang akan dicari selisihnya dengan tanggal sekarang
    tp, saya hanya mau menampilkan jumlah data nya saja jika selisihnya kurang dari 30 dan lebih dari 7

    SELECT DATEDIFF(TglPajak, CURRENT_DATE()) AS selisih
    FROM masterstnk

    nah dari query diatas saya cuman mau menampilkan jumlah record yang jika selisih nya > 7 dan < 30

  • Pak Mohon bantuannya ….. saya punya tebel Rental buku
    pertannyaannya itu yang di panggil 1 table, 2 table, join, order by, Agregate, Group by
    Rumus Query nya bagai mana ya pak??

    Kode Judul Buku Jenis Biaya Sewa
    N001 Bendera Revolusi Non Fiksi 2.000
    F002 Senopati Fiksi 1.500
    K003 Kungfu Boy Komik 1.000
    M001 Gatra Majalah 2.500

  • 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

    Informasi

    Status Honorer

    Informasi

    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

  • mas izin bertanya,
    ada sebuah tabel transaksi di database.
    dari tabel transaksi, dimana ada 1 user yang memiliki data beli terhadap item x terdata beberapa kali dengan nilai rating dan tanggal pesan yang sama.

    code cara menghapusnya duplikatnya untuk semua user yang memiliki kasus yang sama

  • halo mas.. boleh bantu tentang stored procedure? jadi soalnya untuk generate matakuliah yang diambil dimana dalam 1 semester tidak boleh ada mahasiswa yang ambil kombinasi matakuliah yang sama serta minimal jumlah SKS diambil 10 SKS dan dimasukan ke dalam table di bawah ini..

    TABLE_NAME COLUMN_NAME DATA_TYPE PRIMARY KEY
    MATAKULIAH TAHUN NUMERIC(4, 0) PK
    MATAKULIAH SEMESTER NUMERIC(1, 0) PK
    MATAKULIAH NIM NUMERIC(10,) PK
    MATAKULIAH KD_MATAKUL VARCHAR(10)
    MATAKULIAH RECORD_STATUS NUMERIC (1, 0)
    MATAKULIAH CREATE_DATE NUMERIC (8, 0)
    MATAKULIAH CREATE_TIME NUMERIC (6, 0)
    MATAKULIAH CREATE_USER VARCHAR (30)
    MATAKULIAH CHANGE_DATE NUMERIC (8, 0)
    MATAKULIAH CHANGE_TIME NUMERIC (6, 0)
    MATAKULIAH CHANGE_USER VARCHAR (30)

  • mas, mohon solusinya. kalau saya punya record sperti ini :

    R/    nama obat   qty           subtotal
    1      aaaaaaaa			10           10.000
    1      bbbbbb 			4            20.000
    2      vvvvvvvvvv		12           70.000
    2      rrrrrrrrrrrrr	15           80.000
    mau dibuat :
    =========================
    1     aaaaaaaaa         10         	30.000
          bbbbb				4
    2     vvvvvvvvvvv     	12       	150.000   
          rrrrrrrrrrrr		15
    

    menghilangkan angka 1 & 2 yang double. yang nama barang ‘bbbbb’ dan ‘rrrrrrrrrrrrrr’
    query nya sperti apa ya?

  • Halo kak saya inginmenampilkan database 6 bulan terakhir tp saya bingung sm sintaks nya
    saya hanya bisa menampilkan hanya tahun atau hanya bulan
    $cariTahun = mysqli_query($koneksi, “SELECT max(DISTINCT year(waktu_ajaran)) AS tahun FROM mahasiswa”);
    while ($thn = mysqli_fetch_assoc($cariTahun)) {
    $tahun = $thn[‘tahun’];
    }

  • mas mau tanya.. kalau misal mau menghitung jumlah spp mahasiswa yang sudah dibayar caranya bagaimana ya?
    misal mhs a.n saya sudah membayar sebanyak 3x : tgl 10/9/2020 = 1.000.000, tgl 11/12/2020 = 2.000.000, tgl 1/2/2021 = 1.500.000.. itu bagaimana ya? untuk diterapkan menggunkan vb.6

  • mas mau tanya. kalau untuk menampilkan jumlah data keranjang belanja, sesuai pesanan yg sedang login gimana ya?

  • Halo mas mau tanya saya ada case, mau menghitung urut record per tanggal, misalnya ada di tanggal 21-12-2021 ada lima record, dan di tanggal 22-12-2021 ada 2 record, setiap ganti tanggal ke ulang hitungan ke 1 lagi, ingin tampilan seperti ini
    1 21-12-2021
    2 21-12-2021
    3 21-12-2021
    4 21-12-2021
    5 21-12-2021
    1 22-12-2021
    2 21-12-2021
    Terimakasih

  • Hallo Mas saya mau tanya cara menampilkan lama sewa (tgl_kembali – tgl_sewa), apabila tgl kembali dan tanggal sewa itu isi recordnya berbeda”

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com