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.
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?
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
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...
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?
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.
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.
-------------------
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.
öneride bulunabilecek biri var mı?