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