[]

Mysql kod sorusu yine

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  (09.12.11 21:16:10) 
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  (09.12.11 21:53:17 ~ 21:59:46) 
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  (09.12.11 22:16:01) 
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  (09.12.11 22:46:35 ~ 22:47:07) 
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  (09.12.11 22:52:14) 
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  (09.12.11 22:56:46) 
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  (09.12.11 23:47:05) 
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  (09.12.11 23:51:55) 
öneride bulunabilecek biri var mı?


  • tchuck  (10.12.11 09:08:46) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.