[]

Yine Mysql sorusu :(

vallaha günlerdir kafa siktim burda ama kusuruma bakmayın. tek başıma netten falan yardım alıp uğraşıyorum bununla, nette bulamadıklarımı ya da aratmayı bilmediklerimi de size soruyorum, tekrar kusura bakmayın.

şimdi, maçlar diye bir tablomuz olduğunu düşünelim. (en doğru bu örnekle anlatabildim)
1. sütunda evsahibi takımımız var.
2. sütunda deplasman takımımız var.
diğer sütunda da skor var.

Şimdi, mesela istiyorum ki bu maçlarda yer alan takımlar, kaç tane maç kazanmış onu bulayım ve en çok maç kazanandan en az maç kazanana doğru sıralayayım.

Ama yapamadığım şey şu: Sadece evsahibi olarak maç kazananları sıralayabiliyorum ya da sadece deplasman olarak. ama ikisini toplam olarak sıralattıramıyorum bir türlü.

örneğin; select EvSahibi,COUNT(*) AS Kazanan from maclar where "skorun şartı" group by Evsahibi order by COUNT(*) desc

kodunu girdiğimde, takımları yalnızca Evsahibi iken bitirdikleri üst maça göre sıralıyor. Ya da Evsahibi yerine Deplasman yazarsam sadece deplasmanda yer aldıklarında üst bitirdikleri maçları sıralıyor.

Ama ikisinin toplamı olarak nasıl sıralatıcam bir türlü yapamadım. Aklım durdu, aklıma da nasıl yapabileceğim gelmiyor artık. Bir el atsanız?

 
niye 2 tane sorgu kullanmıyorsun ki?


  • emrag  (05.12.11 18:07:35) 
kanka mysql'de acemiyim hakikaten. ama aklıma böyle bir şey yapmak geliyor. sonrar onu yapmaya çalışıyorum. bir şeyler öğrenirim diye. sonra ertesi gün tamamen alakasız başka bir şey aklıma geliyor, sonra da onu yapıyorum.

neyse, peki şöyle bir şey mümkün mü yav? mesela bizim bu takımların bir sütuna ev sahibiyken skorunu yazdırim, diğer sütuna deplasmandayken skorunu yazdırim bunları yazdırdıktan sonra her ikisini birbiriyle topladığım bir başka sütun açayım? böyle bir yöntem falan var mı peki? direk kod olarak yardımcı olsanız falan? :)
  • tchuck  (05.12.11 18:15:25) 
keşke sample veri verseydin.. şöyle bir örnek yapalım:

table: match

id | home | visitor | score

1 ... x ..... y ...... 2-1
2 ... t ..... x ...... 2-3
3 ... s ..... a ...... 1-1

bu table ı manipule edelim.. optimizasyon yapamıcam şimdi:

bir scores tablolsu yapalım

id | team | winorlose | scores | inside | homeoraway[0:home|1:away]

bu table biraz daha adam akıllı bi şekilde oldu

php'de yazalım kodu

$q = mysql_query("select * from match");
while($r = mysql_fetch_array($q))
{
$home = $r['home'];
$visitor = $r['visitor'];
$score = $r['score'];
$pieces = explode("-",$score);
$homescore = $pieces[0];
$awayscore = $pieces[1];
if ($homescore < $awayscore)
{
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$home','0','$homescore','$awayscore','0')");
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$visitor','1','$awayscore','$homescore','1')");
}
else if ($awayscore < $homescore)
{
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$home','1','$homescore','$awayscore','0')");
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$visitor','0','$awayscore','$homescore','1')");
}
else {
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$home','2','$homescore','$awayscore','0')");
$q1=mysql_query("INSERT INTO scores (team,winorlose,scores,inside,homeoraway) values ('$visitor','2','$awayscore','$homescore','1')");
}
}

benzer şekilde teamlist table ı da çıkartılır.. sonra her team için maç bilançoları scores tablosundan çekilir.

bol şans.

not: burada winorlose 0 yenildi, 1 yendi, 2 beraber demek. idler integer/auto increment ve primary index neyn olayları..
  • r j  (05.12.11 19:05:11 ~ 19:11:41) 
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.