NEW!! » Premium Support - PHP, MySQL, Dll Buku Query MySQL Lihat Detail » x

Menampilkan Data Dari Beberapa Tabel MySQL – JOIN Pada MYSQL

Pada kesempatan kali ini kita akan membahas query untuk menampilkan data dari beberapa tabel MySQL. Pada tutorial ini sobat juga akan belajar bagaimana menggunakan JOIN pada MySQL.

Ketika menampilkan data yang disimpan dari database, seringnya kita akan mengambil data dari beberapa tabel untuk diolah sehingga menjadi satu keluaran, misal pada laporan penjualan.

Pada model database relasional RDBMS termasuk MySQL, bentuk pengambilan data ini dapat dilakukan dengan mudah karena masing masing tabel saling berelasi/berhubungan, bentuk hubungan ini bermacam macam, bisa one-to-one relationship, one-to-many, dan many-to-many

Persiapan

Sebelum melangkah lebih jauh, kita perlu menyiapkan tabel yang akan kita gunakan dalam tutorial ini.

Pada contoh kali ini, saya menggunakan empat tabel, yaitu: tabel pelanggan, produk, transaksi, dan transaksi_detail. struktur dan hubungan keempat tabel tersebut tampak seperti pada gambar berikut:

Hubungan Antar Tabel

Dari keempat tabel tersebut, kita hanya menggunakan beberapa diantaranya. Adapun contoh datanya adalah sebagai berikut:

Tabel barang:

+-----------+-------------+-------------+---------+------+
| id_barang | id_kategori | nama_barang | harga   | stok |
+-----------+-------------+-------------+---------+------+
|         1 |           1 | RAM         |  230000 |    4 |
|         2 |           1 | Mainboard   | 1250000 |    7 |
|         3 |           1 | Mouse       |   80000 |    6 |
|         4 |           3 | Mousepad    |   35000 |    3 |
|         5 |           3 | Keyboard    |   80000 |    5 |
+-----------+-------------+-------------+---------+------+

Tabel pelanggan:

+--------------+---------+-------------------+
| id_pelanggan | nama    | email             |
+--------------+---------+-------------------+
|            1 | Alfa    | alfa@yahoo.com    |
|            2 | Beta    | beta@yahoo.com    |
|            3 | Charlie | charlie@gmail.com |
|            4 | Delta   | delta@gmail.com   |
+--------------+---------+-------------------+

Tabel penjualan:

+--------------+--------------+---------------+-----------------+
| id_transaksi | id_pelanggan | tgl_transaksi | total_transaksi |
+--------------+--------------+---------------+-----------------+
|            1 |            1 | 2017-02-22    |          230000 |
|            2 |            3 | 2017-02-22    |          195000 |
|            3 |            2 | 2017-01-01    |         1710000 |
|            4 |            1 | 2017-02-04    |          310000 |
|            5 |         NULL | 2017-02-10    |           80000 |
+--------------+--------------+---------------+-----------------+

I. JOIN Pada MySQL

Untuk menggabungkan tabel pada MySQL, kita gunakan klausa JOIN. Pada MySQL terdapat dua macam bentuk join, yaitu INNER JOIN, LEFT OUTER JOIN, dan RIGHT OUTER JOIN. Format penulisannya adalah sebagai berikut:

SELECT nama_kolom
FROM tabel
INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN tabel ON kondisi

Selain menggunakan klausa ON untuk mendefinisikan kondisi, kita dapat menggunakan klausa USING, format penulisannya adalah:

SELECT nama_kolom
FROM tabel
INNER JOIN | LEFT OUTER JOIN | RIGHT OUTER JOIN tabel USING(nama_kolom)

Klausa USING ini akan menggunakan nama kolom yang ada di dalam tanda kurung untuk menghubungkan kedua tabel, kolom ini harus ada pada tabel yang ingin dihubungkan dan harus memiliki nama yang sama.

Biasanya kolom yang berhubungan didefinisikan sebagai  Primary Key dan Foreign Key, namun tidak masalah jika keduanya bukan primary key maupun foreign key.

II. INNER atau CROSS JOIN

Cara pertama untuk menggabungkan tabel adalah menggunakan inner join. Dengan inner join, tabel akan digabungkan berdasarkan data yang sama, yang ada pada kedua tabel, jika di gambarkan dalam bentuk diagram venn, bentuk inner join seperti tampak pada gambar berikut:

Menampilkan Data Dari Beberapa Tabel MySQL - Ilustrasi Inner Join

Pada MySQL, penulisan INNER JOIN dapat dilakukan dengan dua cara yaitu (1) menggunakan klausa INNER JOIN (2) menggunakan klausa CROSS JOIN (3) cukup menggunakan klausa JOIN saja. Sobat bebas menggunakan keduanya asal konsisten, saya pribadi lebih  prefer menggunakan JOIN saja, karena lebih simpel.

Sebagai contoh kita akan menampilkan data pelanggan yang melakukan pesanan, query yang kita jalankan:

SELECT pl.id_pelanggan, nama, tgl_transaksi, total_transaksi
FROM pelanggan pl
JOIN penjualan pn ON pl.id_pelanggan = pn.id_pelanggan

Jika menggunakan klausa USING, maka query akan berbentuk seperti berikut:

SELECT pl.id_pelanggan, nama, tgl_transaksi, total_transaksi
FROM pelanggan pl
JOIN penjualan pn USING(id_pelanggan)

Hasil:

+--------------+---------+---------------+-----------------+
| id_pelanggan | nama    | tgl_transaksi | total_transaksi |
+--------------+---------+---------------+-----------------+
|            1 | Alfa    | 2017-02-22    |          230000 |
|            3 | Charlie | 2017-02-22    |          195000 |
|            2 | Beta    | 2017-01-01    |         1710000 |
|            1 | Alfa    | 2017-02-04    |          310000 |
+--------------+---------+---------------+-----------------+

Pada contoh diatas, terlihat bahwa

  • Pelanggan dengan nama Delta tidak muncul, hal ini disebabkan pelanggan tersebut tidak pernah melakukan transaksi.
  • Transaksi dengan id_trx 5 tidak muncul, karena transaksi tersebut memiliki nilai id_transaksi NULL, sehingga tidak terhubung ke pelanggan manapun.

II. OUTER JOIN

Cara kedua untuk menggabungkan tabel pada MySQL adalah menggunakan outer join. Pada outer join, data pada salah satu tabel akan ditampilkan semua, sedangkan data pada tabel yang lain hanya akan ditampilkan jika data tersebut ada pada tabel pertama. 

Pada MySQL, OUTER JOIN dibagi menjadi dua, yaitu LEFT OUTER JOIN dan RIGHT OUTER JOIN.

1 LEFT OUTER JOIN

Pada LEFT OUTER JOIN, semua data pada tabel sebelah kiri akan ditampilkan, sedangkan data pada tabel disebelah kanan hanya akan ditampilkan jika data terkait pada tabel tersebut muncul di tabel sebelah kiri.

Jika di gambarkan dalam bentuk diagram venn, bentuk LEFT OUTER JOIN tampak pada gambar berikut:

Ilustrasi Left Outer Join

LEFT OUTER JOIN dapat ditulis menggunakan dua cara, yaitu (1) dengan klausa LEFT OUTER JOIN, (2) cukup dengan klausa LEFT JOIN saja, sobat bebas memilih salah satu yang penting konsisten, saya sendiri prefer menggunakan bentuk kedua karena lebih simpel.

Contoh kita tampilkan semua data pelanggan beserta data transaksinya, jalankan query berikut:

SELECT pl.id_pelanggan, nama, tgl_transaksi, total_transaksi
FROM pelanggan pl
LEFT JOIN penjualan USING(id_pelanggan)

Hasil:

+--------------+---------+---------------+-----------------+
| id_pelanggan | nama    | tgl_transaksi | total_transaksi |
+--------------+---------+---------------+-----------------+
|            1 | Alfa    | 2017-02-22    |          230000 |
|            3 | Charlie | 2017-02-22    |          195000 |
|            2 | Beta    | 2017-01-01    |         1710000 |
|            1 | Alfa    | 2017-02-04    |          310000 |
|            4 | Delta   | NULL          |            NULL |
+--------------+---------+---------------+-----------------+

Pada contoh diatas, terlihat bahwa dengan LEFT JOIN, data pada tabel sebelah kiri, yaitu tabel pelanggan akan ditampilkan semua, sedangkan data pada tabel sebelah kanan hanya akan ditampilkan jika nilai kolom id_pelanggan nya muncul pada tabel pertama, yaitu id_pelanggan 1, 2, dan 3

2 RIGHT OUTER JOIN

Kebalikan dari LEFT OUTER JOIN, pada RIGHT OUTER JOIN, data pada tabel sebelah kanan akan ditampilkan semua, sedangkan data pada sebelah kiri hanya ditampilkan jika data terkait pada tabel tersebut muncul pada tabel sebelah kanan.

Jika digambarkan dalam bentuk diagram venn, maka, bentuk right outer join akan tampak seperti gambar berikut:

Ilustrasi Right Outer Join

Sama seperti LEFT OUTER JOIN, RIGHT OUTER JOIN juga dapat ditulis menggunakan dua cara, yaitu ditulis secara utuh atau cukup RIGHT JOIN saja. Saya sendiri lebih prefer menggunakan RIGHT JOIN saja.

Contoh kita tampilkan semua data transaksi beserta data pelanggannya, jalankan query berikut:

SELECT pl.id_pelanggan, nama, tgl_transaksi, total_transaksi
FROM pelanggan pl
RIGHT JOIN penjualan USING(id_pelanggan)

Hasil:

+--------------+---------+--------------+---------------+-----------------+
| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |
+--------------+---------+--------------+---------------+-----------------+
|            1 | Alfa    |            1 | 2017-02-22    |          230000 |
|            1 | Alfa    |            4 | 2017-02-04    |          310000 |
|            2 | Beta    |            3 | 2017-01-01    |         1710000 |
|            3 | Charlie |            2 | 2017-02-22    |          195000 |
|         NULL | NULL    |            5 | 2017-02-10    |           80000 |
+--------------+---------+--------------+---------------+-----------------+

Pada contoh diatas, terlihat bahwa semua data pada tabel disebelah kanan, yaitu tabel penjualan akan ditampilkan semua, sedangkan pada tabel sebelah kiri hanya ditampilkan yang data id_pelanggan nya muncul pada tabel penjualan.

Perlukah RIGHT JOIN?

Jika kita teliti lebih lanjut, sebenarnya right join hanya memindah posisi tabel, dari kiri ke kanan, contoh query pada right join dapat kita ubah dengan menjadi LEFT JOIN dengan mengubah posisi tabel, perhatikan contoh berikut:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi
FROM penjualan pl
LEFT JOIN pelanggan USING(id_pelanggan)

Perhatikan pada contoh diatas, kita balik posisi tabel penjualan dan tabel pelanggan. Jika query terebut dijalankan, hasil yang kita peroleh adalah:

+--------------+---------+--------------+---------------+-----------------+
| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |
+--------------+---------+--------------+---------------+-----------------+
|            1 | Alfa    |            1 | 2017-02-22    |          230000 |
|            1 | Alfa    |            4 | 2017-02-04    |          310000 |
|            2 | Beta    |            3 | 2017-01-01    |         1710000 |
|            3 | Charlie |            2 | 2017-02-22    |          195000 |
|         NULL | NULL    |            5 | 2017-02-10    |           80000 |
+--------------+---------+--------------+---------------+-----------------+

Perhatikan bahwa hasil diatas sama persis dengan hasil pada contoh right join, jadi kesimpulannya, agar memudahkan, cukup gunakan salah satu bentuk outer join saja, LEFT JOIN atau RIGHT JOIN, saya sendiri prefer menggunakan LEFT JOIN.

III. IMPLISIT JOIN

Sejauh ini, kita menampilkan data dari beberapa tabel MySQL dengan menggunakan klausa JOIN.

Selain menggunakan klausa JOIN, terdapat satu cara lagi untuk menggabungkan tabel MySQL, yaitu menggunakan implisit join, disebut implisit join karena kita tidak menggunakan klausa JOIN, pada implisit join, kriteria hubungan antar tabel di definisikan pada klausa WHERE.

Sebagai contoh, mari kita gabungkan tabel pelanggan dan penjualan, jalankan query berikut:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi
FROM pelanggan pl, penjualan pn
WHERE pl.id_pelanggan = pn.id_pelanggan

Hasil yang kita peroleh:

+--------------+---------+--------------+---------------+-----------------+
| id_pelanggan | nama    | id_transaksi | tgl_transaksi | total_transaksi |
+--------------+---------+--------------+---------------+-----------------+
|            1 | Alfa    |            1 | 2017-02-22    |          230000 |
|            3 | Charlie |            2 | 2017-02-22    |          195000 |
|            2 | Beta    |            3 | 2017-01-01    |         1710000 |
|            1 | Alfa    |            4 | 2017-02-04    |          310000 |
+--------------+---------+--------------+---------------+-----------------+

Perhatikan bahwa hasil tersebut sama persis dengan hasil pada contoh INNER JOIN, sehingga dapat disimpulkan bahwa implisit join = inner join.

Implisit join mensyaratkan kedua tabel memiliki data yang sama ( WHERE pl.id_pelanggan = pn.id_pelanggan ), sehingga implisit join ini hanya berlaku pada INNER JOIN, dan tidak bisa digunakan untuk OUTER JOIN.

Implisit JOIN ini merupakan cara lama ketika pertama kali standar SQL dibuat, setelah muncul standar yang lebih baru (SQL2) maka mulai digunakanlah klausa JOIN. Saya sendiri prefer menggunakan klausa JOIN karena lebih mudah dibaca dan dipahami, terutama hubungan antara tabel yang digabungkan.

Pada bentuk klausa JOIN, hubungan antar tabel dinyatakan pada klausa ON atau USING, sedangkan filter datanya dilakukan pada klausa WHERE, misal:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi
FROM pelanggan pl
LEFT JOIN penjualan pn USING (id_pelanggan)
WHERE pl.id_pelanggan = 2 OR pl.id_pelanggan = 1

sedangkan pada implisit JOIN, hubungan antar tabel dan filter datanya, semua didefinisikan pada klausa WHERE, misal:

SELECT pl.id_pelanggan, nama, id_transaksi, tgl_transaksi, total_transaksi
FROM pelanggan pl, penjualan pn
WHERE pl.id_pelanggan = pn.id_pelanggan
	AND (pl.id_pelanggan = 2 OR pl.id_pelanggan = 1)

Demikian pembahasan mengenai cara menampilkan data dari beberapa tabel MySQL, semoga bermanfaat.

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.

Recomended Post

49 Feedback dari pembaca

  • mohon bantuanya mas Agus
    contoh kasus saya mempunyai 5 tabel yaitu barang,supplier,detail,admin,transaksi dan saya mau menampilkannya ternyata eror .
    saya coba query “SELECT transaksi.notrans, supplier.id_supplier, barang.id_barang, transaksi.tanggal, transaksi.harga, detail.jumlah, transaksi.status, admin.id_admin, detail.jumlah*barang.harga as total from transaksi,barang,detail,supplier,admin WHERE barang.id_barang=detail.id_barang=transaksi.notrans=detail.notrans=admin.id_admin=transaksi.id_admin=supplier.id_supplier=transaksi.id_supplier”;

  • terima kasih untuk tutorialnya.

    saya Punya Masalah dengan menampilkan select jual.kdbrg, jual.tglfak, sum(jual.realisasi), sum(jual.rptotal), stok.nmbrg, stok.glbrg, stok.subgol, count(stok.kdbrg) from jual
    left join stok ON JUAL.kdbrg=STOK.KDBRG group by kdbrg having jual.tglfak >= ‘2017-06-01’ and jual.tglfak <= '2017-06-30' order by kdbrg; (file stok dan file transaksi), dan waktu eksekusinya cukup lama. tq

      • Mas saya mengalami kesuliatan pembuatan view arus barang masuk & keluar. tolong dibantu
        v_barang_masuk (tb_barang_masuk.tanggal, tb_detil_barang_masuk.kode_barang, tb_detil_barang_masuk.qty)
        v_barang_keluar (tb_barang_keluar.tanggal, tb_detil_barang_keluar.kode_barang, tb_detil_barang_keluar.qty)

        saya ingin buat v_arus_barang yg terdiri dari tb_barang.kode_barang, v_barang_masuk.tanggal as tgl1, v_barang_masuk.qty as qty1, v_barang_keluar.tanggal as tgl2, v_barang_keluar.tanggal as tgl2

        saya udah coba berbagai left outer join dll, hasil viewnya keluar tapi ada beberapa record di v_barang_keluar yg duplicate. mohon pencerahannya

  • mas mau tanya..
    saya melakukan left join spt ini

    select barang.kodebarang,barang.qty from barang
    left join dbeli using (kodebarang)

    dan hasilnya error

    Msg 321, Level 15, State 1, Line 2
    “kodebarang” is not a recognized table hints option. If it is intended as a parameter to a table-valued function or to the CHANGETABLE function, ensure that your database compatibility mode is set to 90.

    apa ada kesalahan dalam query saya ya? mohon jawabannya

  • Mas saya mengalami kesulitan dalam pembuatan view arus barang masuk – keluar.
    v_barang_masuk (tb_barang_masuk.tanggal, tb_detil_barang_masuk.kode_barang, tb_detil_barang_masuk.qty)
    v_barang_keluar (tb_barang_keluar.tanggal, tb_detil_barang_keluar.kode_barang, tb_detil_barang_keluar.qty)

    yg ingin dibuat adalah v_persediaan_barang yg terdiri dari kedua view diatas dengan null. mohon pencerahannya

  • kalau LEFT JOIN/RIGHT JOIN pakai WHERE yang benar mana gan =>
    1. LEFT JOIN nama_table ON kolom = kolom AND nama_kolom_where = isi_where
    2. LEFT JOIN nama_table ON kolom = kolom WHERE nama_kolom_where = isi_where

    Mohon pencerahannya, karena seringkali salah dalam penggunaan hal2 tsb

  • Mas saya mau nanya, saya punya table transaksi yg isinya id transaksi, tgl, nama, mekanik, service, dll. Untuk input nama di form datanya pake combobox, karna ngambil data dari table member, dimana di table member itu ada id motor, yg udah saya join sama tbl motor, itu udah bisa kan, namanya siapa motor nya apa, sesuai id yg diinput di form member. Nah yg saya mau tanyakan gimana caranya pas input transaksi, udah pilih nama kan, pas dihasilnya ada namq motor nya? Terimakasih sebelumnya.

    • Maaf belum faham saya mas? apakah di transaksi itu ada combo box nama motor? jika ya tinggal diisikan di value tiap tiap options mas:

      <select name="nama_motor">
      <option value="namamotor1">Motor 1</option>
      <option value="namamotor2">Motor 2</option>
      <option value="namamotor3">Motor 3</option>
      </select>

  • pa saya mau tanya,
    disni saya mempunyai 2 tabel
    1. barang (kdbarang (PK) , namabarang, jumlah)
    2. permintaan (idpermintaan (PK) ,jumlah, kdbarang (FK) )
    jika user meminta barang saya menggunakan permintaan tetapi jika saya select permintaan user tersebut akan muncul datanya.
    tapi kdbarang tersebut mau saya ganti dengan nama barang apakah bisa ?
    jika bisa bagaimana query ny saya butuh pencerahan nya pak. Terimakasih sebelumnya pa.

      • terimakasih pa udah bisa tampil pda saat di tampilkan, tetapi kdbarng masih ada bagaimana untuk menampilkan kd barang itu di gantikan dengan nama barang jadi kd barng tersebut nggk tampil
        tampilan ny yng sekarang ada kd barng namabarang sama jumlah
        tetapi yang sya ingin kan seperti ini : namabarang jumlah
        jadi kdabarng tersebut tidak di tampilkan bagaimana saran bpa untuk while nya
        terimakasih

          • alhamdulillah bisa pak. terimakasih bnyk pa saya sangat tertolong.
            pak saya minta saran saya di berikan membuat aplikasi monitoring alat tulis kantor, dan saya masih pemula sekali jadi masih bnyk yang belum saya bisa dalam ngoding.
            saya mau nanykan untuk pencatatan barang masuk dan keluar itu bagus ny menggunakan cara ap ya maaf saya bertnya lagi hehe,
            Terimakasih sebelumnya pak 🙂

          • Sama sama mas.
            Untuk atk tergantung proses bisnis di masing masing perusahaan mas, biasanya ada pihak yang mengajukan permohonan dan ada pihak yang menyetujui, yang penting tentukan stok awal terlebih dahulu, karena akan mempengaruhi reliabilitas data

  • iya benar ap yng bpa bilang proses ny seperti itu. saya minta tolong koreksi untuk database saya benar nggk seperti ini :
    barang : kdbarang (PK), namabarang, stok, satuan, harga, status
    permintaan : idpermintaan, tangglpinjam, tanggldibutuhkan, jumlah, user, confir, kdbarng (FK)
    pencatatan : idpencatatan(PK), namabarang, masuk, keluar, user, stok awal, sisa

    pencatatan tersebut digunakan untuk laporan nanti nya.
    bagaiman menurut bpa apkh benar database yang saya buat seperti itu. atau harus ad FK barang atau permintaan yng di buat ke pencatatan tersebut.

    fungsi FK yng ada di permintaan untuk mengurangi data stok yang ada di barang jika telah di confirmasi dari admin.

  • halo salam kenal.
    sya ada data penjualan sebut saja trans..
    ada field, kode (ada ekor 2), nama barang qty dan harga serta kode faktur, dan tgl transaksi.

    di master brarang ada field, kode (tanpa ekor 2) nama barang, stok, harga.

    saya ingin buat rekap penjualan transaksi jual dari tanggal x sampai y, ada informasi berapa stoknya diambil dari stok barang. sebelumnya saya ucapkan trims.

      • nama database back_ttrans (penjualan)
        plu : desc : jual : no bon : tgl trans:
        ———————————————-
        2012 mi indo 1 0001 1/1/17
        2012 mi indo 1 0002 2/1/17
        2022 mi kare 2 0002 2/1/17
        ———————————————-

        master (master stok) setelah dikurangi penjualan(plu nya tanpa ekor angka 2) katanya dulu menandakan pcs dan grosisr..
        adalh sbb

        plu : desc :qty
        ———————————————-
        201 mi indomi 2
        202 mi kare 5

        hasil yg diinginkan rekap penjualan filter tgl dari tg 1 sampai 2 hasilnya

        plu desc jual stok
        ———————————————-
        2012 : mi indomi : 2 :2
        2022 : mi kare :1 :5

        saya ada buat sederhana mysqlnya rekap jual aja maklum otak terbatas sbb

        USE apps;
        SELECT plu AS “kode”,
        descp AS”nama barang”,
        SUM(jual) AS “jual”
        FROM back_ttrans
        WHERE
        DATE(tgl_trans) >= ‘2017-12-01’ AND DATE(tgl_trans) <= '2017-12-31'
        GROUP BY plu

        • Itu tabel back_ttrans tidak ngelink dengan master_stok mas, karena kode plu nya beda sehingga keduanya tidak berelasi
          Agar berelasi isikan kode di back_ttrans dengan master_stok mas, baru di joinkan

          jadi isikan kode 2012 dan 2022 ke tabel master_stok, baru di joinkan….

          Bisa si… menggabunggakan keduanya menggunakan trik tertentu, tapi desain tabel seperti ini tidak benar dan akan sangat menyulitkan kedepannya

          • iya. ini dia didesain ada ekor. maksudnya untuk jual pcs ekornya 2 grosir ekornya 1
            jadi misalnyanya 2012 itu artinya pcs. 2011 itu artinya grosir. selam ini triknya saya rekap dulu backttrn. dan master di sql yog. disimpan masing masing menjadi csv fo excel. lalu dengan prosedure macro excel yg amat panjang. baru dapt menghasilkan laporan yg sy inginkan. triknya saya dimakro. master barang saya tambahin angka 2 di setiap kode. baru bisa di vlookup. hehe he

            tolong donk kalo ada trik query..

          • Sama saja mas, memang harus di tambahkan angka 2 di master stok. Kalau SQL kita buat temporary tabel (dengan subquery) terlebih dahulu dari master_stok, yang isinya sudah ada ekor angka duanya, selanjutnya tinggal di joinkan dengan tabel penjualan

          • itu dah. gimana caranya. buat database sementara. yang menambahkan angka 2 di setiap plu master. kemudian hasilnya itu di join ke rekap backtrans..
            tolong dong kasih contekan prosedurenya. buta masalah sql. cuman pengen laporan rekap aja.

          • USE apps;
            SELECT plu, /*ini kode back_ttrans*/
            master.descp, /*ini keterengan dari master stok ya?*/
            SUM(qty) /*ini ngerekap back_trans ya? */
            FROM back_ttrans
            LEFT JOIN (
            SELECT CONCAT(plu, “2”), /*ini nambahkan angka 2 di kode master ya?*/
            descp, /*ini keterangan di master ya?*/
            on_hand1 /*ini field stok mas*/
            FROM MASTER
            ) AS MASTER USING plu

            hasilnya ..

            Error Code: 1064
            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘plu
            LIMIT 0, 1000’ at line 10

            saya coba buat juga rekap menurut rentang penjualan

            USE apps;
            SELECT plu, /*ini kode back_ttrans*/
            master.descp, /*ini keterengan dari master stok ya?*/
            SUM(qty) /*ini ngerekap back_trans ya? */
            FROM back_ttrans
            WHERE
            DATE(tgl_trans) >= ‘2017-12-01’ AND DATE(tgl_trans) <= '2017-12-31'
            GROUP BY plu
            LEFT JOIN (
            SELECT CONCAT(plu, "2"), /*ini nambahkan angka 2 di kode master ya?*/
            descp, /*ini keterangan di master ya?*/
            on_hand1 /*ini field stok mas*/
            FROM MASTER
            ) AS MASTER USING plu

            hasilnya gini pak…

            Error Code: 1064
            You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LEFT JOIN (
            SELECT CONCAT(plu, "2"), /*ini nambahkan angka 2 di kode master y' at line 8

          • USE apps;

            SELECT plu,          
                   master.descp AS "Nama Barang",
                   SUM(qty) AS "jual",
                   master.on_hand1 AS "stok",
                   master.cost AS "hpp",
                   mst_loader.price2 AS "hjl"
                   
            FROM back_ttrans
            LEFT JOIN (
            	SELECT CONCAT(master.plu,"2") AS plu,   
                                   master.descp,
                                   master.cost,      
                                   master.on_hand1    
            	FROM MASTER
            	) 
            	
            AS MASTER USING (plu)
            LEFT JOIN (
            	SELECT CONCAT(mst_loader.plu,"2") AS plu,
            	               mst_loader.descp,
            	               mst_loader.price2   
                                   
            	FROM mst_loader
            	) 
            	
            AS mst_loader USING (plu)
            
            WHERE 
               DATE(tgl_trans) >= '2017-12-01' AND DATE(tgl_trans) <= '2017-12-31'
               GROUP BY plu
            

            dan hasilnya sbb:

            plu	Nama Barang	                               jual   stok         hpp	hjl
            100002	MI INDOMIE GORENG/40D	98	-259	2072	2300
            100022	MI INDOMIE RASA AYAM SPD	29	100	       1989	3000
            100042	MI INDOMIE KALDU AYAM/	5	  -4	       1914	2200
            100052	MI INDOMIE RASA SOTO MIE	33	-83	       1939	2300
            100062	MI INDOMIE RASA KARI AYA	67	-166	2094	2300
            100072	MI SEDAAP GORENG 90GR/	166	-448	2050	2300
            100082	MI SEDAAP SOTO AYAM 90GR	76	-529	1925	2200
            100092	MI SEDAAP AYAM BAWANG 9	13	213	       1925	2200
            100102	QUAKER OUT 200G INSTANTL	2	3	       9304	10800
            100112	MI INDOMIE 75G SOTO SPECL	19	41	       1940	2300
            dst..
            

            berhasil pak!!!!! txxuuuuu…, kemana nih ngirim biaya konsultasinya… he he,

  • Id | idtransaksi | id barang
    1 | 1 | 5
    2 | 1 | 10
    3 | 1 |13
    4 | 2 | 5
    5 | 2 | 13
    6 | 3 | 7

    pak gimana caranya supaya menjadi :
    ID id_barang| hasil
    1 | 5,10 | 1
    2 | 5,13 | 2

    id barang 5,13 ada 2 dari total transaksi
    id barang 5,10 ada 1 dari total transaksi .

Silakan tinggalkan komentar

Newsletter

Jadilah yang pertama tahu berita terbaru dari Jagowebdev.com

Jasa Konsultasi PHP MySQL Website Dengan Ahlinya

Like Us