alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/531e823738cb170a198b46fc/ask-mysql-query-pemecahan
[ASK] Mysql Query pencarian
Guys, ane ada masalah jadi gini. Ane punya database katakan 2 table, table pertama merupakan noteinv (filednya Kd, nomor, noinv) dan yang satu table namanya beacukai (filednya NoBC, TglBc, noinv). Nah ane mau cari noinv di noteinv bedasarkan noinv yg di beacukai, masalahnya noinv di beacukai dalam satu row itu bisa di isi lebih dari satu inv mislanya 115,2250,15/A/FB (dalam satu filed/row) nah kalo di table noteinv cuman satu per satu, misalnya yang 115 ada di nomor A, dan 2250 di nomor B, di 15/A/FB di nomor C. Nah gimana caranya ane bisa dapetin tuh nomor di table noteinv dengan berdasarkan table beacukai????


NB
Quote:
Ane pake program php dan mysql. emoticon-Big Grin
pake LIKE gan
Quote:Original Posted By dandybreath
pake LIKE gan


masalah nya kaya gini

noteinv
nomor noinv
A 2251
B 55551


di beacukai

NoBC noinv
001 2251,55551


kalau pake like pastinya yang ke dapet kaya 225121 ataugak 55551/K/FB emoticon-Hammer
Quote:Original Posted By LarsM


masalah nya kaya gini

noteinv
nomor noinv
A 2251
B 55551


di beacukai

NoBC noinv
001 2251,55551


kalau pake like pastinya yang ke dapet kaya 225121 ataugak 55551/K/FB emoticon-Hammer


Bisa diperjelas lagi pertanyaannya gan. Dan contoh dari yang agan maksud.

gimana kalo hasil query noinv ke beacukai di-explode dulu di pehape utk dijadikan WHERE IN (array) dlm query ke noteinv ?
loe bikin dulu program pemisah nomor invoice dari beacukai, terserah pake apa, tapi kalo dipaksakan pake query ya sulit.

btw, siapa sih yang ngerancang database macem gitu ... benar-benar emoticon-Hammer (S)
Quote:Original Posted By LarsM
Guys, ane ada masalah jadi gini. Ane punya database katakan 2 table, table pertama merupakan noteinv (filednya Kd, nomor, noinv) dan yang satu table namanya beacukai (filednya NoBC, TglBc, noinv). Nah ane mau cari noinv di noteinv bedasarkan noinv yg di beacukai, masalahnya noinv di beacukai dalam satu row itu bisa di isi lebih dari satu inv mislanya 115,2250,15/A/FB (dalam satu filed/row) nah kalo di table noteinv cuman satu per satu, misalnya yang 115 ada di nomor A, dan 2250 di nomor B, di 15/A/FB di nomor C. Nah gimana caranya ane bisa dapetin tuh nomor di table noteinv dengan berdasarkan table beacukai????


NB


tabel beacukainya ngaco bener, 1NF aja kaga itu.

bikin querybuilder via aplikasi aja, ambil nomor inv dari tabel beacukai lalu pecah dgn delimiter kome (klo php pake fungsi explode klo ga salah)

trus masukin ke ke SELECT query pake loop.

ntar kira2 querynya jadi
SELECT * FROM noteinv WHERE noinv IN('2251','55551')

itu noinv di tabel noteinv tipenya varchar kan? soalnya contohnya ada yg '55551/K/FB'

kalo tipe numeric mah ga usah pake explode, langsung hajar aja ke string querynya nilai mentahan dari tabel beacukai

SELECT * FROM noteinv WHERE noinv IN(2251,55551)
tongolin erd nya aj gan emoticon-Malu (S)
rancangan database yang dibuat tidak memenuhi kaidah RDBMS jadi sangat tidak efisien dilakukan dengan SQL secara langsung, salah satu solusinya adalah mengambil nilai noinv pada tabel beacukai tadi dengan operasi array pada program misal PHP menggunakan explode lalu kemudian dijadikan parameter pada query SQL seperti agan di atas " SELECT * FROM beacukai WHERE noinv IN <parameter>"
coba pakai join atau inner join....


mungkin ini bisa jadi referensi
http://dev.mysql.com/doc/refman/5.0/en/join.html
Quote:Original Posted By onionkid


tabel beacukainya ngaco bener, 1NF aja kaga itu.

bikin querybuilder via aplikasi aja, ambil nomor inv dari tabel beacukai lalu pecah dgn delimiter kome (klo php pake fungsi explode klo ga salah)

trus masukin ke ke SELECT query pake loop.

ntar kira2 querynya jadi
SELECT * FROM noteinv WHERE noinv IN('2251','55551')

itu noinv di tabel noteinv tipenya varchar kan? soalnya contohnya ada yg '55551/K/FB'

kalo tipe numeric mah ga usah pake explode, langsung hajar aja ke string querynya nilai mentahan dari tabel beacukai

SELECT * FROM noteinv WHERE noinv IN(2251,55551)


Hmmm... Kayanya punya agan bisa ane ambil deh, mau gak mau musti di explode dulu baru di pake lagi. Ok deh. Bukan tipe numrik tapi string. Saran agan ane coba dulu. emoticon-Big Grin
Quote:Original Posted By peyotpetot
loe bikin dulu program pemisah nomor invoice dari beacukai, terserah pake apa, tapi kalo dipaksakan pake query ya sulit.

btw, siapa sih yang ngerancang database macem gitu ... benar-benar emoticon-Hammer (S)


Dari dulu emank kaya gitu gak tau sapa yang ituin emoticon-Hammer
coba pake query gini gan:Quote:select a.*,b.* from beacukai as a left join noteinv as b on a.noinv REGEXP b.noinvkalo dalam suatu NoBC ada bbrp noinv maka NoBC tsb akan muncul sebanyak noinv-nya.