Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Bagaimana membuat laporan stok periode pada transaksi masuk dan keluar barang dalam 1 preview di php

Mohon Bantuan nya, Saya ingin menampilkan laporan perperiode di PHP & MYSQL dengan format seperti ini :
STOK_AWAL |QTY_IN | QTY_OUT |STOK_AKHIR

dengan database sebagai berikut :
BARANG : kode_barang,nama_barang,Stok
pengadaan : ada_id,ada_nota,ada_tgl,kode_suplay
detail_pengadaan : dada_id,dada_qty.kode_barang,ada_nota,harga
keluar : tau_id,tau_nota,tau_tgl
detail_keluar : dtau_id,dtau_qty,kode_barang,tau_nota


Minta bantuannya dong,untuk coding dan query nya,,,,

«1

Tanggapan

  • ???

    cuma nyebut field nya doang,
    tapi kagak nyebut masing-masing field berelasi dgn field mana di table apa ?

    lha gimana yg baca bisa bayangin query yg mesti dibuat mas ?
    ngasal gituh ?
  • edited August 2015
    Sory om domba lupa hehehe, ini gambaran query nya mungkin bisa sedikit menggambarkan relasi nya,saya masih kebingungan kalo mau nampilin data per-periode nya soalnya gak bisa pake BETWEEN dua kali ya??

    SELECT barang.kode_barang,barang.nama_barang,SUM(detail_pengadaan.dada_qty) AS MASUK,KELUAR FROM barang LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang LEFT JOIN (SELECT barang.kode_barang,barang.nama_barang,SUM(detail_tau.dtau_qty) AS KELUAR FROM barang,detail_tau WHERE barang.kode_barang=detail_tau.kode_barang GROUP BY barang.kode_barang ASC) as pakai ON barang.kode_barang=pakai.kode_barang GROUP BY barang.kode_barang ASC
  • edited August 2015

    <?php
    session_start();
    include'koneksi.php';
    $hari=$_POST[hari];
    $bulan=$_POST[bulan];
    $tahun=$_POST[tahun];
    $dino = $_POST[dino];
    $buln = $_POST[buln];
    $tahn = $_POST[tahn];
    $semua="$tahun-$bulan-$hari";
    $semua1="$tahn-$buln-$dino";
    ?>

    LAPORAN KARTU STOK SPARE PART PERIODE

    PERIODE TANGGAL - <?php echo"$hari";?> /<?php echo"$bulan";?>/ <?php echo"$tahun";?> SAMPAI DENGAN TANGGAL - <?php echo"$dino";?> /<?php echo"$buln";?>/<?php echo"$tahn";?>



    Tanggal Cetak : <? echo date("d-M-Y");?>


    No
    Nama Barang
    Masuk
    Keluar
    Sisa
    Stok Real

    <?php
    $m=1;
    $proses1="SELECT barang.kode_barang,barang.nama_barang,SUM(detail_pengadaan.dada_qty) AS MASUK,KELUAR FROM barang LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang LEFT JOIN
    (SELECT barang.kode_barang,barang.nama_barang,SUM(detail_tau.dtau_qty) AS KELUAR FROM barang,detail_tau WHERE barang.kode_barang=detail_tau.kode_barang GROUP BY barang.kode_barang ASC) as pakai
    ON barang.kode_barang=pakai.kode_barang AND BETWEEN '$semua' and '$semua1' GROUP BY barang.kode_barang ASC ";
    $queri1=mysql_query($proses1)or die("Maaf bukan admin ngga bisa");
    while($hasil1=mysql_fetch_array($queri1)) {
    ?>

    <? echo"$m";?>


    <?php echo"$hasil1[nama_barang]";?>
    <?php echo"$hasil1[MASUK]";?>
    <?php echo"$hasil1[KELUAR]";?>
    <?php echo"$hasil1[SISA_TRANSAKSI]";?>
    <?php echo"$hasil1[STOK]";?>

     

    <?
    $m++;
    $berapa=$hasil1[dada_qty-dtau_qty+dretur_qty];
    $kabeh+=$hasil1[total]; } ?>

    <? ?>
    < /pre>
  • edited August 2015

    <?php
    session_start();
    include'koneksi.php';
    $hari=$_POST[hari];
    $bulan=$_POST[bulan];
    $tahun=$_POST[tahun];
    $dino = $_POST[dino];
    $buln = $_POST[buln];
    $tahn = $_POST[tahn];
    $semua="$tahun-$bulan-$hari";
    $semua1="$tahn-$buln-$dino";
    ?>

    LAPORAN KARTU STOK SPARE PART PERIODE

    PERIODE TANGGAL - <?php echo"$hari";?> /<?php echo"$bulan";?>/ <?php echo"$tahun";?> SAMPAI DENGAN TANGGAL - <?php echo"$dino";?> /<?php echo"$buln";?>/<?php echo"$tahn";?>



    Tanggal Cetak : <? echo date("d-M-Y");?>


    No
    Nama Barang
    Masuk
    Keluar
    Sisa
    Stok Real

    <?php
    $m=1;
    $proses1="SELECT barang.kode_barang,barang.nama_barang,SUM(detail_pengadaan.dada_qty) AS MASUK,KELUAR FROM barang LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang LEFT JOIN
    (SELECT barang.kode_barang,barang.nama_barang,SUM(detail_tau.dtau_qty) AS KELUAR FROM barang,detail_tau WHERE barang.kode_barang=detail_tau.kode_barang GROUP BY barang.kode_barang ASC) as pakai
    ON barang.kode_barang=pakai.kode_barang AND BETWEEN '$semua' and '$semua1' GROUP BY barang.kode_barang ASC ";
    $queri1=mysql_query($proses1)or die("Maaf bukan admin ngga bisa");
    while($hasil1=mysql_fetch_array($queri1)) {
    ?>

    <? echo"$m";?>


    <?php echo"$hasil1[nama_barang]";?>
    <?php echo"$hasil1[MASUK]";?>
    <?php echo"$hasil1[KELUAR]";?>
    <?php echo"$hasil1[SISA_TRANSAKSI]";?>
    <?php echo"$hasil1[STOK]";?>

     

    <?
    $m++;
    $berapa=$hasil1[dada_qty-dtau_qty+dretur_qty];
    $kabeh+=$hasil1[total]; } ?>

    <? ?>
    < /pre>
  • edited September 2015
    barang ... ini master barang elo

    pengadaan dan detil_pengadaan ... itu relasi nya 1-TO-Many
    keluar dan detil_keluar ... sama, relasinya 1-TO-Many

    kalo elo mau hasil yg bener
    pengadaan dan keluar mesti dijadikan tepat 1 record per 1 kode barang

    otomatis elo bakal ada 2 sub query
    bukan cuma 1
    masalahnya tanggal elo ada di table pengadaan dan keluar, jadi 2-2 nya harus dipake

    tapi jumlahnya ada di detil, jadi juga harus ngikut dgn di JOIN ke masing-masing table pengadaan dan keluar nya

    SELECT ...
    FROM barang

    LEFT JOIN (
    SELECT ...
    FROM pengadaan
    LEFT JOIN detil_pengadaan
    WHERE ... BETWEEN ...
    GROUP BY ...
    ) ...

    LEFT JOIN (
    SELECT ...
    FROM keluar
    LEFT JOIN detil_keluar
    WHERE ... BETWEEN ...
    GROUP BY ...
    ) ...

    sudah
  • error om domba, kalo nambahin pengadaan.ada_tgl sama keluar.tau_tglnya dimana?

    soalnya gw mau nampilin data dari kedua tanggal itu (kaya kartu stok gitu per-periode)
  • edited September 2015

    SELECT
    barang.kode_barang,barang.nama_barang,
    SUM(detail_pengadaan.dada_qty) AS MASUK,
    KELUAR FROM barang LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang AND pengadaan.ada_tgl BETWEEN '$semua' and '$semua1'
    LEFT JOIN (
    SELECT detail_tau.kode_barang,SUM(detail_tau.dtau_qty) AS KELUAR
    FROM barang,detail_tau
    WHERE tau.tau_tgl BETWEEN '$semua' and '$semua1'
    GROUP BY barang.kode_barang ASC
    ) as pakai ON barang.kode_barang=pakai.kode_barang

    GROUP BY barang.kode_barang ASC "

    Ket : ('$semua','$semua1') keterangan variable di php nya
  • edited September 2015
    Iya Om yang barang itu masternya...

    saya pake combo box om untuk pilihan tgl nya, masih tetep error om

    bisa gw email gk contoh program sama databasenya? biar lebih gampang
  • edited September 2015
    Masih error nih OM...

    SELECT barang.kode_barang,barang.nama_barang
    FROM barang LEFT JOIN (SELECT barang.kode_barang,barang.nama_barang,sum(detail_pengadaan.dada_qty) as TOTAL_MASUK,pengadaan.ada_tgl)
    FROM pengadaan LEFT JOIN detail_pengadaan WHERE pengadaan.ada_nota=detail_pengadaan.ada_nota AND barang.kode_barang=detail_pengadaan.kode_barang AND pengadaan.ada_tgl BETWEEN '2015-08-1' and '2015-08-31'
    GROUP BY barang.kode_barang ASC
    ) LEFT JOIN (
    SELECT barang.kode_barang,barang.nama_barang,sum(detail_keluar.dkeluar_qty) as TOTAL_KELUAR,keluar.tau_tgl
    FROM keluar
    LEFT JOIN detail_keluar
    WHERE keluar.tau_nota=detail_keluar.tau_nota AND detail_keluar.kode_barang=barang.kode_barang AND keluar.tau_tgl BETWEEN '2015-08-1' and '2015-08-31' GROUP BY barang.kode_barang ASC
    )
  • edited September 2015
    ya jelas bakal error ...

    SELECT barang.kode_barang,barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT barang.kode_barang,barang.nama_barang,sum(detail_pengadaan.dada_qty) as TOTAL_MASUK,pengadaan.ada_tgl)
    FROM pengadaan
    LEFT JOIN detail_pengadaan ???
    WHERE pengadaan.ada_nota=detail_pengadaan.ada_nota AND barang.kode_barang=detail_pengadaan.kode_barang AND pengadaan.ada_tgl BETWEEN '2015-08-1' and '2015-08-31'
    GROUP BY barang.kode_barang ASC
    ) ???

    LEFT JOIN (
    SELECT barang.kode_barang,barang.nama_barang,sum(detail_keluar.dkeluar_qty) as TOTAL_KELUAR,keluar.tau_tgl
    FROM keluar
    LEFT JOIN detail_keluar ???
    WHERE keluar.tau_nota=detail_keluar.tau_nota AND detail_keluar.kode_barang=barang.kode_barang AND keluar.tau_tgl BETWEEN '2015-08-1' and '2015-08-31'
    GROUP BY barang.kode_barang ASC
    ) ???

    itu barang punya siapa ?
    emang sub query kenal table yg kagak di pake di dalam sub query nya ?

    mana ada JOIN kagak pake ON ?
  • edited September 2015
    Gini juga masih error om dombaa..
    SELECT barang.kode_barang,barang.nama_barang FROM barang LEFT JOIN (
    SELECT sum(detail_pengadaan.dada_qty) as TOTAL_MASUK,pengadaan.ada_tgl) FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota=detail_pengadaan.ada_nota WHERE barang.kode_barang=detail_pengadaan.kode_barang AND pengadaan.ada_tgl BETWEEN '$semua' and '$semua1') LEFT JOIN (SELECT sum(detail_keluar.dtau_qty) as TOTAL_KELUAR,keluar.tau_tgl FROM keluar LEFT JOIN detail_keluar ON keluar.tau_nota=detail_keluar.tau_nota WHERE detail_keluar.kode_barang=barang.kode_barang AND tau.tau_tgl BETWEEN '$semua' and '$semua1'
    ) GROUP BY barang.kode_barang ASC
  • edited September 2015

    elo baca baik-baik query elo ini :

    SELECT barang.kode_barang,barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT sum(detail_pengadaan.dada_qty) as TOTAL_MASUK,pengadaan.ada_tgl
    )
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota=detail_pengadaan.ada_nota
    WHERE barang.kode_barang=detail_pengadaan.kode_barang AND pengadaan.ada_tgl BETWEEN '$semua' and '$semua1'
    )

    LEFT JOIN (
    SELECT sum(detail_keluar.dtau_qty) as TOTAL_KELUAR,keluar.tau_tgl
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota=detail_keluar.tau_nota
    WHERE detail_keluar.kode_barang=barang.kode_barang AND tau.tau_tgl BETWEEN '$semua' and '$semua1'
    )

    GROUP BY barang.kode_barang ASC

    bandingkan dgn struktur query yg gw tunjukin
    SELECT ...
    FROM barang

    LEFT JOIN (
    SELECT ...
    FROM pengadaan
    LEFT JOIN detil_pengadaan
    WHERE ... BETWEEN ...
    GROUP BY ...
    ) ...

    LEFT JOIN (
    SELECT ...
    FROM keluar
    LEFT JOIN detil_keluar
    WHERE ... BETWEEN ...
    GROUP BY ...
    ) ...
    sama gak ?

    dan, gw sudah bilang dan nunjukin,
    dan harusnya elo juga tau meskipun kagak gw tunjukin ...
    JOIN bersyarat itu PASTI pake ON
  • edited September 2015
    ini OM DOMBA masih error juga minta koreksi nya.......

    SELECT barang.kode_barang,barang.nama_barang,MASUK,KELUAR
    FROM barang

    LEFT JOIN (
    SELECT pengadaan.ada_tgl,SUM(detail_pengadaan.dada_qty)AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang
    WHERE pengadaan.ada_nota=detail_pengadaan.ada_nota AND pengadaan.ada_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_pengadaan.kode_barang ASC
    ) AS MASUK

    LEFT JOIN (
    SELECT keluar.tau_tgl,SUM(detail_keluar.dtau_qty)AS QTY_OUT
    FROM tau
    LEFT JOIN detail_keluar ON barang.kode_barang=detail_keluar.kode_barang
    WHERE keluar.tau_nota=detail_keluar.tau_nota AND keluar.tau_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_keluar.kode_barang ASC
    ) AS KELUAR
  • SELECT barang.kode_barang,barang.nama_barang,MASUK,KELUAR
    FROM barang

    LEFT JOIN (
    SELECT pengadaan.ada_tgl,SUM(detail_pengadaan.dada_qty)AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON barang.kode_barang=detail_pengadaan.kode_barang
    WHERE pengadaan.ada_nota=detail_pengadaan.ada_nota AND pengadaan.ada_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_pengadaan.kode_barang ASC
    ) AS MASUK ???

    LEFT JOIN (
    SELECT keluar.tau_tgl,SUM(detail_keluar.dtau_qty)AS QTY_OUT
    FROM tau
    LEFT JOIN detail_keluar ON barang.kode_barang=detail_keluar.kode_barang
    WHERE keluar.tau_nota=detail_keluar.tau_nota AND keluar.tau_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_keluar.kode_barang ASC
    ) AS KELUAR ???
    itu barang punya siapa ?
    emang sub query kenal table yg kagak di pake di dalam sub query nya ?

    mana ada JOIN kagak pake ON ?
  • edited September 2015
    INI JUGA MASIH ERROR OM DOMBA, boleh minta yang contoh real nya yang bener QUERY nya OM ?? udah mumet saya omm minta bantuannyaaa

    SELECT barang.kode_barang,barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT pengadaan.ada_tgl,SUM(detail_pengadaan.dada_qty)AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota=detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_pengadaan.kode_barang ASC
    )

    LEFT JOIN (
    SELECT keluar.tau_tgl,SUM(detail_keluar.dtau_qty)AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_tau ON tau.tau_nota=detail_tau.tau_nota
    WHERE keluar.tau_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_keluar.kode_barang ASC
    )
  • edited September 2015
    SELECT ..., barang.kode_barang,barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT ..., pengadaan.ada_tgl, SUM(detail_pengadaan.dada_qty)AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota=detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_pengadaan.kode_barang ASC
    ) a ON a.???=barang=.???

    LEFT JOIN (
    SELECT ..., keluar.tau_tgl,SUM(detail_keluar.dtau_qty)AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_tau ON tau.tau_nota=detail_tau.tau_nota
    WHERE keluar.tau_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_keluar.kode_barang ASC
    ) b ON b.???=barang.???

    keluar itu table yg mana lagi ?
  • keluar emang tabel gua om..

    SELECT barang.kode_barang,barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT pengadaan.ada_tgl,SUM(detail_pengadaan.dada_qty)AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota=detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_pengadaan.kode_barang ASC
    )

    LEFT JOIN (
    SELECT keluar.tau_tgl,SUM(detail_keluar.dtau_qty)AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota=detail_keluar.tau_nota
    WHERE keluar.tau_tgl BETWEEN 2015-08-01 AND 2015-08-31
    GROUP BY detail_keluar.kode_barang ASC
    )
  • edited September 2015
    lha itu yg gw tunjukin yg merah, kenapa kagak dipake ?

    gw pan sudah nulis bolak-balik,
    JOIN bersyarat itu pake ON
  • edited September 2015
    OM DOMBA masih error nih gini jg,bisa minta yg lebih terang gak gambaran nya..

    SELECT barang.kode_barang, barang.nama_barang
    FROM barang
    LEFT JOIN (SELECT pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN 2015 -08 -01 AND 2015 -08 -31
    GROUP BY detail_pengadaan.kode_barang ASC)as a ON a.kode_barang = barang.kode_barang LEFT JOIN (SELECT keluar.tau_tgl, SUM( detail_keluar.dtau_qty ) AS QTY_OUT FROM keluar LEFT JOIN detail_keluar ON keluar.tau_nota = detail_keluar.tau_nota WHERE keluar.tau_tgl BETWEEN 2015 -08 -01 AND 2015 -08 -31 GROUP BY detail_keluar.kode_barang ASC)as b ON b.kode_barang = barang.kode_barang
  • edited September 2015
    SELECT barang.kode_barang, barang.nama_barang
    FROM barang

    LEFT JOIN (
    SELECT pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN 2015 -08 -01 AND 2015 -08 -31
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT keluar.tau_tgl, SUM( detail_keluar.dtau_qty ) AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota = detail_keluar.tau_nota
    WHERE keluar.tau_tgl BETWEEN 2015 -08 -01 AND 2015 -08 -31
    GROUP BY detail_keluar.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang



    tanggal itu perlakuannya kaya string, jelas salah

    a.kode_barang
    b.kode_barang
    dari mana ?
    lha wong di SELECT nya kagak pernah elo tulis

    pan sudah gw kasih "..., "
    itu ada field yg juga mesti elo ambil, biar bisa elo pake
  • edited September 2015
    kasih gambaran nya lagi OM perihal query nya biar lebih bisa jelas,field2 yg mana yg harus gw pake buat lengkapin query di atas sama yang kondisi a & b itu harusnya gmn,sama tanggal juga,bener2 pusing gw OM DOMBA....soalnya yang ngerelasi sama tabel barang cuma yag kedua detil itu,,,
  • SELECT barang.kode_barang, barang.nama_barang, ...
    FROM barang

    LEFT JOIN (
    SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_keluar.kode_barang, keluar.tau_tgl, SUM( detail_keluar.dtau_qty ) AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota = detail_keluar.tau_nota
    WHERE keluar.tau_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_keluar.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang
  • edited September 2015
    OK OM DOMBA yang ini udah bisa,,kalo mau nambahin sama nampilin kondisi STOK AWALNYA GMN OM
    pengen gini tampilan nya :

    STOK_AWAL(stok akhir bulan lalu) | QTY_IN |QTY_OUT | STOK_AKHIR


    SELECT barang.kode_barang, barang.nama_barang, QTY_IN,QTY_OUT
    FROM barang

    LEFT JOIN (
    SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_keluar.kode_barang, keluar.tau_tgl, SUM( detail_keluar.dtau_qty ) AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota = detail_keluar.tau_nota
    WHERE keluar.tau_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_keluar.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang
  • ya elo sebut to itu elo ambil dari table apa

    kalo dari sub query, elo sebut alias nya apa
  • edited September 2015
    berarti gw nambah sub query lagi gt OM DOMBA?

    terus, untuk hasil yang di atas kalo datanya kosong kenapa gk bisa muncul ya om,gw pengen bisa jadi muncull angka 0?
  • edited September 2015
    ini contoh laporan nya OM DOMBAA..

    gw masih bingung bikin kondisi stok awalnya di querynya seperti apa..

    SELECT barang.kode_barang, barang.nama_barang, QTY_IN,QTY_OUT,RETUR,barang.stok as STOK_REAL FROM barang LEFT JOIN (SELECT detail_pengadaan.kode_barang,pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota WHERE pengadaan.ada_tgl BETWEEN '$semua' AND '$semua1' GROUP BY detail_pengadaan.kode_barang ASC )as a ON a.kode_barang = barang.kode_barang
    LEFT JOIN ( SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT FROM tau LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota WHERE tau.tau_tgl BETWEEN '$semua' AND '$semua1' GROUP BY detail_tau.kode_barang ASC )as b ON b.kode_barang = barang.kode_barang
    LEFT JOIN ( SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR FROM retur LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota WHERE retur.retur_tgl BETWEEN '$semua' AND '$semua1' GROUP BY detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang

    image
  • berarti gw nambah sub query lagi gt OM DOMBA?

    terus, untuk hasil yang di atas kalo datanya kosong kenapa gk bisa muncul ya om,gw pengen bisa jadi muncull angka 0?
    maksudnya gimana to ?

    elo pan sudah ada sub query di query yg elo tulis
    nambah apa lagi ?



    btw, dikasih tau query yg baik
    malah bikin query yg lebih berat
    ini maksudnya gimana lagi ?

    elo kalo sudah ngadepin data ribuan
    kalo sampai lelet
    jangan ngedumel
  • edited September 2015
    iya OM gw cuma nanya,itu query kemaren gw belom tambah apa2 Om DOMBA, mksd gw, gw harus nambah kondisi query nya dimana nya,gw minta pencerahan real nya di query seperti kemaren OM..
  • edited September 2015
    SELECT barang.kode_barang, barang.nama_barang, a.QTY_IN,b.QTY_OUT
    FROM barang

    LEFT JOIN (
    SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_keluar.kode_barang, keluar.tau_tgl, SUM( detail_keluar.dtau_qty ) AS QTY_OUT
    FROM keluar
    LEFT JOIN detail_keluar ON keluar.tau_nota = detail_keluar.tau_nota
    WHERE keluar.tau_tgl BETWEEN "2015-08-01" AND "2015-08-31"
    GROUP BY detail_keluar.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang


    pan sudah gw bilang
    ya elo sebut to itu elo ambil dari table apa

    kalo dari sub query, elo sebut alias nya apa
  • edited September 2015
    udah yg itu mah OM DOMBA, mksd gw kalo datanya (NULL) alias kosong knp gk muncul pas d filter datanya jd 0,apa ada tambahan di querynya apa gmn biar tampil jd angka 0 nggk kosong gt kaya contoh image yg gw kirim (di kolom retur) sama bikin kondisi buat dapetin stok awal di bulan kemaren OM heleppppp :( Mohon koreksi nya OM DOMBA

    SELECT barang.kode_barang, barang.nama_barang,(barang.stok+(b.QTY_OUT+c.RETUR))as STOK_AWAL, a.QTY_IN,b.QTY_OUT,c.RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang,pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN FROM pengadaan
    LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota WHERE pengadaan.ada_tgl BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY detail_pengadaan.kode_barang ASC )as a ON a.kode_barang = barang.kode_barang
    LEFT JOIN ( SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota WHERE tau.tau_tgl BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY detail_tau.kode_barang ASC )as b ON b.kode_barang = barang.kode_barang
    LEFT JOIN ( SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota WHERE retur.retur_tgl BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang


  • SUM( IFNULL( ... , 0 ) )
  • masih tetep gk bisa OM,masih kosong,minta contoh penulisan querynya OM kalo pake query yang di atas.
  • lha query nya elo tulis kaya apa yg pake IFNULL ?
  • NIH Gini yg gw merahin OM DOMBA...

    terus yang gw kasih warna ORANYE gw mau ngejumlahin stok awalnya kok salah ya OM minta pencerahan QUERY yg realnya OM DOMBA


    SELECT barang.kode_barang,
    barang.nama_barang,(barang.stok+(b.QTY_OUT+c.RETUR))as STOK_AWAL,
    a.QTY_IN,b.QTY_OUT,c.RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang,pengadaan.ada_tgl, SUM(IFNULL detail_pengadaan.dada_qty,0) ) AS QTY_IN FROM pengadaan
    LEFT
    JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY
    detail_pengadaan.kode_barang ASC )as a ON a.kode_barang =
    barang.kode_barang
    LEFT JOIN ( SELECT detail_tau.kode_barang, tau.tau_tgl, SUM(IFNULL( detail_tau.dtau_qty,0) ) AS QTY_OUT FROM tau
    LEFT
    JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota WHERE tau.tau_tgl
    BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY detail_tau.kode_barang
    ASC )as b ON b.kode_barang = barang.kode_barang
    LEFT JOIN ( SELECT detail_retur.kode_barang, retur.retur_tgl, SUM(IFNULL( detail_retur.dretur_qty )) AS RETUR FROM retur
    LEFT
    JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota WHERE
    retur.retur_tgl BETWEEN "2015-08-01" AND "2015-08-31" GROUP BY
    detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang
  • edited September 2015
    SELECT
    barang.kode_barang,
    barang.nama_barang,
    (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS ... ,
    IFNULL(b.QTY_OUT,0) AS ... ,
    IFNULL(c.RETUR,0) AS ... ,
    barang.stok as STOK_REAL

    FROM barang

    ...
  • edited September 2015
    OM,sekarang masalahnya ketika di short tanggal,barang yang gk ada transaksi di bulan itu pun ikut ikutan tampil,,gmn supaya hanya barang yg transaksi saja yg tampilnya Om domba..Minta pencerahan QUERY nya lagi OM....

    SELECT barang.kode_barang, barang.nama_barang, (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS QTY_IN,IFNULL(b.QTY_OUT,0) AS QTY_OUT,IFNULL(c.RETUR,0)AS RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT
    FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota
    WHERE tau.tau_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_tau.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR
    FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota
    WHERE retur.retur_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang
  • sort ? berarti pake ORDER ?
    lha dimana elo tulis ORDER nya ?
  • INI OM,masih tampil data barang yg gk ada transaksi nya juga :-S, minta pencerahan query yg benernya gmn OM..

    SELECT barang.kode_barang, barang.nama_barang, (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS QTY_IN,IFNULL(b.QTY_OUT,0) AS QTY_OUT,IFNULL(c.RETUR,0)AS RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_pengadaan.kode_barang ORDER BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT
    FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota
    WHERE tau.tau_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_tau.kode_barang ORDER BY detail_tau.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR
    FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota
    WHERE retur.retur_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_retur.kode_barang ORDER BY detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang
  • edited September 2015
    kagak bakal ngaruh kalo ORDER nya di subquery

    soalnya bakal balik lagi ngikut urutan di table barang

    kalo mau urut di hasil akhir, ORDER nya ngikut table barang, di luar subquery



    SELECT ...
    FROM ...
    LEFT JOIN ... ON ...
    ORDER BY ...
  • edited September 2015
    GINI MAsih salah OM DOMBAAAAA... :-S

    SELECT barang.kode_barang, barang.nama_barang, (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS QTY_IN,IFNULL(b.QTY_OUT,0) AS QTY_OUT,IFNULL(c.RETUR,0)AS RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang ORDER BY detail_pengadaan.kode_barang ASC

    LEFT JOIN (
    SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT
    FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota
    WHERE tau.tau_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_tau.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang ORDER BY detail_tau.kode_barang ASC

    LEFT JOIN (
    SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR
    FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota
    WHERE retur.retur_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_retur.kode_barang )as c ON c.kode_barang = barang.kode_barang ORDER BY detail_retur.kode_barang ASC 
  • edited September 2015
    ORDER itu cukup 1 maassss ...

    mau JOIN nya ada 100, ORDER nya cuma 1
    dan itu merujuk ke table yg di FROM
    bukan table yg dipake di subquery

    kalo mau pake field yg ada di subquery, itu yg ada di SELECT nya subquery
    pakenya rujukan alias nya subquery
  • edited September 2015
    KAlo gini jg masih tampil semua nya mas dombaaaaaa...
    minta pencerahan query realnya seperti apa yang bener nya mengurut query seperti dibawah ini OM...


    SELECT barang.kode_barang, barang.nama_barang, (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS QTY_IN,IFNULL(b.QTY_OUT,0) AS QTY_OUT,IFNULL(c.RETUR,0)AS RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE pengadaan.ada_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT
    FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota
    WHERE tau.tau_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_tau.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR
    FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota
    WHERE retur.retur_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_retur.kode_barang )as c ON c.kode_barang = barang.kode_barang ORDER BY barang.kode_barang ASC
  • "tampil semua" gimana maksudnya ?
    elo pan bilangnya "sort"
  • edited September 2015
    nih kaya gini, liat angka yg masuk sama keluarnya nol,berarti itu data harusnya kan gk perlu ter short lis soalnya gk ada di transaksi di periode tersebut,tp ini masih tampil kaya gini mksd gw om dombaa..gw pengen nya yg ke short cuma yg ada data nya(ada transaksi di periode tersebut) gk semua tampil gt..

    minta pencerahan query nya donggg

    image
  • itu bukan "sort"
    itu cuma kondisi syarat WHERE biasa

    ... WHERE ... IS NOT NULL ...

    dan elo harus memeriksa 3 field yg asalnya dari subquery
    kalo 3-3 nya NULL, kagak usah ditampilkan
  • edited September 2015
    tolong dong OM kasih gambaran real select di query nya,kaya yg di atas gw bingung kalo cuma gt doang mah om...nyimpen nya harus dmn dan field apa aja..
  • SELECT ...
    FROM ...
    LEFT JOIN ... ON ...
    WHERE ... IS NOT NULL AND ... IS NOT NULL AND ... IS NOT NULL
  • waduhhhh,gw harus pake is not null nya di setiap sub query nya apa gmn?
    kasih yag lebih jelas bisa OM..
  • WHERE a.kode_barang IS NOT NULL AND ... IS NOT NULL AND ... IS NOT NULL
  • edited September 2015
    ini juga masih salah OM... untuk kondisi where nya hanya di masing2 sub query nya..gw masih bingung harus naro yg Om domba kasih posisinya dimana..minta pencerahan lg OM yg lebih real..

    SELECT barang.kode_barang, barang.nama_barang, (barang.stok+(IFNULL(b.QTY_OUT,0)+IFNULL(c.RETUR,0))) as STOK_AWAL,
    IFNULL(a.QTY_IN,0) AS QTY_IN,IFNULL(b.QTY_OUT,0) AS QTY_OUT,IFNULL(c.RETUR,0)AS RETUR,barang.stok as STOK_REAL FROM barang
    LEFT JOIN (SELECT detail_pengadaan.kode_barang, pengadaan.ada_tgl, SUM( detail_pengadaan.dada_qty ) AS QTY_IN
    FROM pengadaan LEFT JOIN detail_pengadaan ON pengadaan.ada_nota = detail_pengadaan.ada_nota
    WHERE a.kode_barang IS NOT NULL AND pengadaan.ada_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_pengadaan.kode_barang ASC
    )as a ON a.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_tau.kode_barang, tau.tau_tgl, SUM( detail_tau.dtau_qty ) AS QTY_OUT
    FROM tau
    LEFT JOIN detail_tau ON tau.tau_nota = detail_tau.tau_nota
    WHERE  b.kode_barang IS NOT NULL AND tau.tau_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_tau.kode_barang ASC
    )as b ON b.kode_barang = barang.kode_barang

    LEFT JOIN (
    SELECT detail_retur.kode_barang, retur.retur_tgl, SUM( detail_retur.dretur_qty ) AS RETUR
    FROM retur
    LEFT JOIN detail_retur ON retur.retur_nota = detail_retur.dretur_nota
    WHERE c.kode_barang IS NOT NULL AND retur.retur_tgl BETWEEN "2015-09-01" AND "2015-09-7"
    GROUP BY detail_retur.kode_barang ASC )as c ON c.kode_barang = barang.kode_barang
Sign In or Register to comment.