İçinden çıkamadığım bir sorgu...
İçinden çıkamadığım bir sorgu...
Arkadaşlar hemen konuya gireyim, şimdi elimde iki tablo var. Birincisi takılar tablosu.Bu tabloda takım isimleri (fener,cimbom vs.) ve id leri bulunuyor.
İkinci tablo ise oynanan maçların tablosu.Bu tabloda da ev sahibi takımın id si, konuk takımın id si ve skor tutuluyor. Şimdi bu iki tablodan puan durumunu nasıl hesaplarım? Sadece bu iki tablodaki verileri kullanarak bunu nasıl bir sorguyla gerçekleştiririm? Yapabilen varsa yardım etsin babasının hayrına...
İkinci tablo ise oynanan maçların tablosu.Bu tabloda da ev sahibi takımın id si, konuk takımın id si ve skor tutuluyor. Şimdi bu iki tablodan puan durumunu nasıl hesaplarım? Sadece bu iki tablodaki verileri kullanarak bunu nasıl bir sorguyla gerçekleştiririm? Yapabilen varsa yardım etsin babasının hayrına...
Re: İçinden çıkamadığım bir sorgu...
ikinci tablo yapısınmı verin puan tutuluyormu skor nasıl tutuluyor v.s.
Bir kelimenin anlamını öğretsen bile yeter..



Re: İçinden çıkamadığım bir sorgu...
Hocam ikinci tabloda 3 adet kolon var. Her satır bir karşılaşmayı tutuyor. Karşılaşmaları da şu şekilde tutuyor. Takımların id leri ve de sonuc. Yani birinci kolonda ev sahibi takımın id si var, ikinci kolonda deplasmana gelen takımın id si ve diğer üçüncü kolonda da skor tutuluyor. Skor da 1,2 ya da 0 şeklinde. Bilirsiniz zaten 1 se ev sahibi takım kazanmıs demektir 2 se digeri 0 sa da berabere bitmiştir maç. Şimdi sadece bu verilerle bu tabloya sorgu çekip hangi takım kazanmışsa onun puanı 3 artacak, berabere bitmişse ikisi de 1 er puan alacak takımların. Bu tabloda puan tutulmuyor. Bizim puanı bu tabloya sorgu cekerek hesaplatıp basmamız lazım. Problem bu yani.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: İçinden çıkamadığım bir sorgu...
Skor tablosunda evsahibi ve deplasman takım gol sayılarını ayrı sütunlarda tutmalısın. Skor tek sütunda tutulursa pek sağlıklı olmayacaktır.
ve puan durumu
Kod: Tümünü seç
TAKIMLAR
ID AD
-- ---
1 TRABZON
2 BURSA
3 FB
vs...
SKOR
ID HAFTA EVSAHIBI DEPLASMAN EGOL DGOL
--- --------- ----------- -------------- ------- --------
1 12 2 1 0 2 //->Bursa 0-2 Trabzon
v.s.

Kod: Tümünü seç
select t.AD, p.PUAN from TAKIMLAR as t
left join
(select EVSAHIBI as ID, sum(case when EGOL>DGOL then 3 when EGOL=DGOL then 1 else 0 end) as PUAN from SKOR
group by EVSAHIBI
union all
select DEPLASMAN as ID, sum(case when EGOL<DGOL then 3 when EGOL=DGOL then 1 else 0 end) as PUAN from SKOR
group by DEPLASMAN) as p
on t.ID=p.ID
order by PUAN desc
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: İçinden çıkamadığım bir sorgu...
Dostum bu sorguda fazla sonuc dönüyor. Mesela benim takım tablosunda 6 takım var. 6 satır dönmesi gerekirken 10 satır döndü.Çizgiden sonrasının olmaması gerekir.
Birde sorgudaki union all yerine sadece union yazılacak galiba; fakat sadece union yazmama rağmen yine de fazla kayıt geliyor.
Galatasaray 13
Konyaspor 10
Fenerbahçe 7
Beşiktaş 4
Trabzonspor 3
Bursaspor 3
-----------------------------
Trabzonspor 1
Bursaspor 0
Beşiktaş 0
Fenerbahçe 0
Benim veriler şu şekilde :
e_id d_id e_gol d_gol
1 2 3 0
1 3 4 1
1 4 4 1
1 5 4 2
1 6 0 0
2 3 1 0
2 4 3 1
2 5 2 2
2 6 1 3
3 4 2 3
3 5 0 0
3 6 3 2
4 5 1 1
4 6 0 3
5 6 0 2
Birde sorgudaki union all yerine sadece union yazılacak galiba; fakat sadece union yazmama rağmen yine de fazla kayıt geliyor.
Galatasaray 13
Konyaspor 10
Fenerbahçe 7
Beşiktaş 4
Trabzonspor 3
Bursaspor 3
-----------------------------
Trabzonspor 1
Bursaspor 0
Beşiktaş 0
Fenerbahçe 0
Benim veriler şu şekilde :
e_id d_id e_gol d_gol
1 2 3 0
1 3 4 1
1 4 4 1
1 5 4 2
1 6 0 0
2 3 1 0
2 4 3 1
2 5 2 2
2 6 1 3
3 4 2 3
3 5 0 0
3 6 3 2
4 5 1 1
4 6 0 3
5 6 0 2
Re: İçinden çıkamadığım bir sorgu...
Fazla kayıt gelme olayını hallettim top ile fakat
hala kafama takılan şey union all yerine union yazdığım halde neden fazla kayıt geliyor.
Top kullanmadan bunu yapmanın bir yolu yok mu?
hala kafama takılan şey union all yerine union yazdığım halde neden fazla kayıt geliyor.
Top kullanmadan bunu yapmanın bir yolu yok mu?
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: İçinden çıkamadığım bir sorgu...
top çözüm olmayacaktır. toplam değeri eksik verecektir. Hem ev sahibi hem de deplasman takımı olarak 2 ayrı toplam kaydı geliyor. Join ile gelen satırları tekrar gruplayarak toplarsak sanırım sorun düzelecektir.
Kod: Tümünü seç
select t.AD, pt.PUAN from TAKIMLAR as t
left join
(select ID, sum(PUAN) as PUAN from (select EVSAHIBI as ID, sum(case when EGOL>DGOL then 3 when EGOL=DGOL then 1 else 0 end) as PUAN from SKOR
group by EVSAHIBI
union all
select DEPLASMAN as ID, sum(case when EGOL<DGOL then 3 when EGOL=DGOL then 1 else 0 end) as PUAN from SKOR
group by DEPLASMAN) as p group by ID) as pt
on t.ID=pt.ID
order by PUAN desc
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
Re: İçinden çıkamadığım bir sorgu...
Eyvallah hocam saolasın...