Forum
merhabalar 2 tablom var
giderler
seferler
iki tablodada ortak alanlar plakano ve seferid
seferler tablosunda 34 e 3000 plakalı otobüs 1100 sefernolu seferde 5yolcu taşımış. 5x 20 = 100 lira toplamış
1100 34 E 3000 1 20
1100 34 E 3000 1 20
1100 34 E 3000 1 20
1100 34 E 3000 1 20
1100 34 E 3000 1 20
giderler tablosunda bu sefernoya ait gider girişleri var
1100 34 E 3000 kaptan 10
1100 34 E 3000 muavin 10
1100 34 E 3000 yakıt 30
1100 34 E 3000 otopark 5
almak istediğim sonuç şu:
seferno plakano yolcu tutar kaptan muavin yakıt otopark
1100 34 E 3000 5 100 10 10 30 5
SQL:
select g.seferno,g.plakano,count(s.ID) as yolcu, sum(s.tutar) as tutar,
sum(case when g.islem='kaptan' then g.tutar else 0 end) kaptan ,
sum(case when g.islem='muavin' then g.tutar else 0 end) muavin,
sum(case when g.islem='yakıt' then g.tutar else 0 end) yakıt,
sum(case when g.islem='otopark' then g.tutar else 0 end) otopark
from giderler g
left outer join seferler s on s.seferid=g.seferid
where g.tarih='2014-09-01'
group by g.plaka,g.seferid
fakat yolcu sayısı 5 yerine 25 görünüyor, tutar 100 yerine 500 görünüyor.
nerede yanlış yapmış olabilirim yardımcı olursanız sevinirim.
teşekkürler.
inner join right join left join ne varsa denedim ama malesef bir türlü sonuca gidemedim.
iç içe select kullanınca sonuca varıyorum,
fakat 5 adet select kullanmalıyım sorguda size gönderdiğim sadece bir örnek. gerçek sorgu daha detaylı.
aynı sorguda 5 select kullanınca sonuç olumlu ama sorgu sonucu 2 dakikadan fazla sürüyor o zamanda, gerekli alanlar indexli olduğu galde