select takimlar,COUNT(*) as Ust FROM yeniskorlar WHERE attigi+yedigi>2 GROUP BY takimlar ORDER BY COUNT(*) DESC

diye bir kod var diyelim elimde. burada, yeniskorlar tablosunda Takimlar, attigi ve yedigi diye 3 tane sütun var ve bu takımların maçta attığı, yediği golleri gösteriyor. Dolayısıyla birinci sütunda takımlar birkaç defa tekrar ediyor.

Neyse, yukarıdaki koda göre ben maçını üst bitirmiş takımları sıralıyorum. ama istiyorum ki, bir de yan tarafa oynadıkları maç sayısını da gösteren bir şey yapayım (aynı anda). ama nasıl yapacağımı bir türlü bulamıyorum. tavsiye falan var mı? çok eksik anlattıysam tekrar yazabilriim.

 

şurada benzer bir şey var stackoverflow.com

turkay

kanka çok teşekkür ederim. bu kodu kullanmaya çalışırken:
-------------------------
select c.city, c.id,
(select count(*) as cnt from city c2
where c2.city = c.city) as order_col
from city c
order by order_col desc

--------------------------

[Err] 1242 - Subquery returns more than 1 row

gibi bir hata alıyorum, bu mysql işlerinde son derece acemi biriyim. acaba neyden kaynaklanıyor olabilir?

tchuck

misal

select takimlar,COUNT(*) as ust,
(SELECT COUNT(*) FROM yeniskorlar GROUP BY takimlar)
FROM yeniskorlar
where iyattigi+iyyedigi>2
GROUP BY takimlar
ORDER BY COUNT(*) DESC LIMIT 10

böyle yazıyorum ve dediğim problemi çıkarıyor :S

tchuck

içerdeki selectin içine where koyup dışarıda ilgilendiği "takimlar" için kaç tane olduğunu saydırmalısın.

... (SELECT COUNT(*) AS kac_mac FROM yeniskorlar y2 WHERE y2.takimlar = y.takimlar) as mac_sayisi ... FROM yeniskorlar y .... ORDER BY mac_sayisi

gibi...

turkay

kanka şu y2 işini hiç anlamadım, dediğim gibi acemiyim kusuruma bakma.

şöyle hem onun işleyişiyle ilgili ufak bir bilgi versen, ben de yukarıdaki formüle göre düzeltmeye çalışayım?

tchuck

aynı tabloyu tek sorguda çağırdığın için, karışma olmasın diye

tablo_adi t

tablo_adi t2 diyorsun. t'ler kısaltmaymış gibi (alias?). daha sonra

t.id ile t2.id farklı farklı kullanabiliyorsun. istiyorsan ali, veli de diyebilirsin, t imiş y imiş çok önemi yok.

turkay

yok yahu hakikaten kafayı yemek üzereyim. biliyorum sorun bende, acemi olduğum için yapamıyorum ama inadım inat bütün gece uyuyamayacağım ben bunu yapmdan. allah aşkına biri daha el atsın da yapıp kurtulayım yoksa bu gece uyku yok bana.
--------------
SELECT y.takimlar,COUNT(*) as oynadigi,
(SELECT COUNT(*) as ust FROM yeniskorlar y2 ) AS Üst
FROM yeniskorlar y where y.attigi+y.yedigi>2 group by y.takimlar ORDER BY COUNT(*) desc

bu şekle soktum. Üst'ün verdiği sonuç her satırda aynı çıkıyor ve 10820 gibi büyük bir sayı çıkıyor. niçin maç sayısını saydıramadım anlayamıyorum. onun içinde group yapmaya çalışıyorum bu sefer de hata veriyor.
çünkü: SELECT COUNT(*) as ust FROM yeniskorlar y2 bunun snucunu yalnız girince 10820 diye bir sonuç çıkarıyor ve bunu her satıra yapıştırıyor.

takımlara göre nasıl gruplayarak yalnızca o takımların satırlarını saydırabilirim aklım durdu şuan hakikaten.
-------------------

tchuck

SELECT y.takimlar,COUNT(*) as oynadigi,
(SELECT COUNT(*) as ust FROM yeniskorlar y2 GROUP BY y2.takimlar ) AS Üst
FROM yeniskorlar y where y.attigi+y.yedigi>2 GROUP BY y.takimlar


böyle yapıyorum [Err] 1242 - Subquery returns more than 1 row
hatası veriyor. artık kafam çalışmamaya başladı. bu hatayı bu sonuncuda niçin veriyor anlamış değilim.

tchuck

öneride bulunabilecek biri var mı?

tchuck
1

mobil görünümden çık