alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/52d4ce31fbca1789368b4646/help-sql-syntax
[HELP] SQL Syntax
gimana caranya menggabungkan select count dan select query ? atau ada cara query yang lain ?

misalnya ada tabel_pemesanan dan tabel_makanan yang isinya

tabel_pemesanan
Code:

id_makanan,harga_makanan,tanggal_pesan,kode_pemasok
1 2000 2013-12-22 budi
2 4000 2013-12-22 amir
3 10000 2013-12-22 budi
4 50000 2013-12-22 budi
5 5000 2013-12-24 susi
6 3000 2013-12-26 cindy
7 20000 2013-12-26 budi


tabel_makanan
Code:

id_makanan, nama_makanan
1 indomiegoreng
2 cocacola
3 sprit
4 aqua
5 roti
6 sabun
7 pastagigi


nah masalahnya gimana caranya menggabungkan select query where dengan count
kalo gw pakai cari berdasarkan nama jumlah count ikut berkurang
Code:

select tabel_pemesanan.kode_pemasok,tabel_pemesanan.tanggal_pesan,count(tabel_pemesanan.tanggal_pesan) as jumlah from tabel_pemesanan,tabel_makanan where tabel_pemesanan.id_makanan=tabel_makanan.id_makanan and tabel_makanan.nama_makanan like '%indomie%' GROUP BY tabel_pemesanan.tanggal_pesan,tabel_pemesanan.kode_pemasok


hasil countnya jg ikut berkurang
output

Code:

kode_pemasok tanggal_pesan jumlah
budi 2013-12-22 1



nah gimana caranya supaya hasil countnya tidak berkurang tetapi tetap menggunakan WHERE nama_makanan like
inginnya begini

Code:

kode_pemasok tanggal_pesan jumlah
budi 2013-12-22 3


mudah mudahan om mengerti maksud gw
thx
itu di tabel_pemesanan yg id_makanan nya 1 (indomiegoreng) cuman ada 1 bukannya gan?
di querynya agan pake
Code:
where tabel_pemesanan.id_makanan=tabel_makanan.id_makanan

berarti dia bakal cuman pasangin yg id_makanan nya sama
Quote:Original Posted By BreakMyFall
itu di tabel_pemesanan yg id_makanan nya 1 (indomiegoreng) cuman ada 1 bukannya gan?
di querynya agan pake
Code:
where tabel_pemesanan.id_makanan=tabel_makanan.id_makanan

berarti dia bakal cuman pasangin yg id_makanan nya sama


ia mmg pasangin yang sama ,soalnya kan pengen search berdasarkan nama_makanan
cuma pengeennya jg ditampilkan berapa banyak item yang dipesan pada saat tanggal itu

jadi kalo misalnya nama_makanan like '%A%'
pengennya outputnya kayak begini
Code:

kode_pemasok,tanggal_pesan,jumlah
budi 2013-12-26 1
cindy 2013-12-26 1
budi 2013-12-22 3
amir 2013-12-22 1

nama susi dihilangkan karena tidak ada namamakanan like A

jadi bahasa kasarnya
saya ingin mencari tau apakah saya sudah pesan namabarang 'A' dan tolong ditampilkan berapa banyak jumlah pesanan saya pada tanggal tersebut

soalnya agak aneh kalo tiap kali search nama berbeda jumlah pesanan ikut berbeda emoticon-Cape d... (S)emoticon-Cape d... (S)
GROUP BY tabel_pemesanan.tanggal_pesan,tabel_pemesanan.kode_pemasok HAVING tabel_makanan.nama_makanan like '%indomie%'

Coba-coba gan.. emoticon-Ngakak
Quote:Original Posted By -sony-
ia mmg pasangin yang sama ,soalnya kan pengen search berdasarkan nama_makanan
cuma pengeennya jg ditampilkan berapa banyak item yang dipesan pada saat tanggal itu

jadi kalo misalnya nama_makanan like '%A%'
pengennya outputnya kayak begini
Code:

kode_pemasok,tanggal_pesan,jumlah
budi 2013-12-26 1
cindy 2013-12-26 1
budi 2013-12-22 3
amir 2013-12-22 1

nama susi dihilangkan karena tidak ada namamakanan like A

jadi bahasa kasarnya
saya ingin mencari tau apakah saya sudah pesan namabarang 'A' dan tolong ditampilkan berapa banyak jumlah pesanan saya pada tanggal tersebut

soalnya agak aneh kalo tiap kali search nama berbeda jumlah pesanan ikut berbeda emoticon-Cape d... (S)emoticon-Cape d... (S)


hasilnya agan salah tuh, seharusnya gini bukan kalo pake nama_makanan like "%a%":
Code:

kode_pemasok,tanggal_pesan,jumlah
budi 2013-12-26 1
cindy 2013-12-26 1
budi 2013-12-22 1
amir 2013-12-22 1


soalnya di tanggal 22 si budi belinya indomiegoreng, sprit, aqua (yg memenuhi like %a% cuman aqua)
Quote:Original Posted By BreakMyFall


hasilnya agan salah tuh, seharusnya gini bukan kalo pake nama_makanan like "%a%":
Code:

kode_pemasok,tanggal_pesan,jumlah
budi 2013-12-26 1
cindy 2013-12-26 1
budi 2013-12-22 1
amir 2013-12-22 1


soalnya di tanggal 22 si budi belinya indomiegoreng, sprit, aqua (yg memenuhi like %a% cuman aqua)


ia aq mmg tau musti pakai %% tp kan cuma pemisalan

jadi om? emoticon-Matabelo
anu querynya gimana emoticon-Matabelo
loh ya agan tujuan querynya mau kayak gimana emang emoticon-Ngakak

itu kalo ane liat dari post pertama, diliat dari definisi tabel-tabelnya sama sql querynya udah bener kok
Quote:Original Posted By BreakMyFall
loh ya agan tujuan querynya mau kayak gimana emang emoticon-Ngakak

itu kalo ane liat dari post pertama, diliat dari definisi tabel-tabelnya sama sql querynya udah bener kok


kalo di liat yang pertama
itu jumlah count sesuai dengan hasil pencarian
kalo misalnya ditemukan hanya 2 nama pencarian %A% maka jumlah hanya 2
sedangkan yang gw pengennya
jumlah count itu ditentukan oleh database bukan pencarian

kalo pengennya output begini sewaktu pencarian %A%
Code:

kode_pemasok,tanggal_pesan,jumlah

budi 2013-12-26 1

cindy 2013-12-26 1

budi 2013-12-22 3

amir 2013-12-22 1


tetapi yang keluar hanya
Code:

kode_pemasok,tanggal_pesan,jumlah

budi 2013-12-26 1

cindy 2013-12-26 1

budi 2013-12-22 1

amir 2013-12-22 1
http://sqlfiddle.com/#!2/781ad/14

cendolin ane kalo berkenan wkwk
Quote:Original Posted By BreakMyFall
http://sqlfiddle.com/#!2/781ad/14

cendolin ane kalo berkenan wkwk


wah expert benar om
kalo berkenan bisa dijelaskan maksud querynya

baru tau gw kalo alias table itu bisa di where
perasaan ga bisa emoticon-Bingung (S)
Quote:Original Posted By -sony-
wah expert benar om
kalo berkenan bisa dijelaskan maksud querynya

baru tau gw kalo alias table itu bisa di where
perasaan ga bisa emoticon-Bingung (S)


itu pake inner join gan, hasil inner join (yg udah di-query macem2) kan bisa dianggap tabel juga (disitu ane kasih nama tb2)
alias tabel hasil dari inner join bisa kok di-refer pake operasi "." kayak tabel biasa
Quote:Original Posted By BreakMyFall


itu pake inner join gan, hasil inner join (yg udah di-query macem2) kan bisa dianggap tabel juga (disitu ane kasih nama tb2)
alias tabel hasil dari inner join bisa kok di-refer pake operasi "." kayak tabel biasa


berarti kalo mau inner join harus jumlah select kolom harus sama?

jadi ini inner join gunanya menyatukan tabel kah? terus bedanya dengan where table=table itu gimana?
Quote:Original Posted By -sony-
berarti kalo mau inner join harus jumlah select kolom harus sama?

jadi ini inner join gunanya menyatukan tabel kah? terus bedanya dengan where table=table itu gimana?


jumlah kolom nggak harus sama kok gan, dia nge-gabungin tabel sih intinya, kondisi buat nge-gabunginnya ditulis di WHERE atau ON (agak2 lupa juga ane wkwk) http://www.w3schools.com/sql/sql_join.asp

kalo cuman pake select-from-where querynya nggak bisa dimodifikasi banyak. dan kalo pake inner join itu query di dalem inner joinnya di jalanin dulu sementara kalo cuman select-from-where tabelnya digabungin dulu (jadi inner join juga bisa dipake buat optimisasi query dari sisi memori, dkk)
menyederhanankan saja SQL dari agan BreakMyFall
Code:

SELECT
t.kode_pemasok,
t.tanggal_pesan,
tc.Total
FROM
tabel_pemesanan AS t
INNER JOIN tabel_makanan AS m ON ( t.id_makanan = m.id_makanan )
LEFT JOIN
(
SELECT
COUNT(*) AS Total,
t1.tanggal_pesan,
t1.kode_pemasok
FROM
tabel_pemesanan AS t1
GROUP BY
t1.tanggal_pesan,
t1.kode_pemasok
) AS tc ON ( t.tanggal_pesan = tc.tanggal_pesan AND t.kode_pemasok = tc.kode_pemasok )
WHERE
m.nama_makanan LIKE '%a%';

Ane ga ngerti gan sebenernyayang ente maksud emoticon-Bingung (S)