İçinden çıkamadığım bir sorgu...

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
aaasss1
Üye
Mesajlar: 6
Kayıt: 16 Ara 2010 11:17

İçinden çıkamadığım bir sorgu...

Mesaj gönderen aaasss1 »

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...
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: İçinden çıkamadığım bir sorgu...

Mesaj gönderen conari »

ikinci tablo yapısınmı verin puan tutuluyormu skor nasıl tutuluyor v.s.
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
aaasss1
Üye
Mesajlar: 6
Kayıt: 16 Ara 2010 11:17

Re: İçinden çıkamadığım bir sorgu...

Mesaj gönderen aaasss1 »

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.
Kullanıcı avatarı
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...

Mesaj gönderen sabanakman »

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.

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.
ve puan durumu :mrgreen:

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. - .
aaasss1
Üye
Mesajlar: 6
Kayıt: 16 Ara 2010 11:17

Re: İçinden çıkamadığım bir sorgu...

Mesaj gönderen aaasss1 »

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
aaasss1
Üye
Mesajlar: 6
Kayıt: 16 Ara 2010 11:17

Re: İçinden çıkamadığım bir sorgu...

Mesaj gönderen aaasss1 »

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?
Kullanıcı avatarı
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...

Mesaj gönderen sabanakman »

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. - .
aaasss1
Üye
Mesajlar: 6
Kayıt: 16 Ara 2010 11:17

Re: İçinden çıkamadığım bir sorgu...

Mesaj gönderen aaasss1 »

Eyvallah hocam saolasın...
Cevapla