ş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?
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? :)
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ı..