[]

Mysql ve Php ile ilgili 2 soru

1. soru select işlemi ile ilgili. ilk formülü vereyim;

Select takimlar, COUNT(*) AS UST_SAYISI,(SELECT COUNT(*) FROM yeniskorlar as yeniskorlar2 WHERE yeniskorlar.takimlar = yeniskorlar2.takimlar) as TOPLAM_MAC
from yeniskorlar where attigi>yedigi GROUP BY takimlar

şimdi merak ediyorum şöyle bir şey mümkün mü: bu formülde gösterdiğimiz UST ve MAC_SAYISI isimli sütunları birbirine böldürüp bir başka sütunda bunlardan elde ettiğim sonuçları yazdırabilir miyim? bu sütunları select ile gösterdiğim için problem oldu, o yüzden göstertemiyorum bir türlü.

2. soru ise INSERT INTO ile ilgili;

$q = mysql_query("select * from matches");
while($r = mysql_fetch_array($q))
{
$evsahibi = $r['evsahibi'];
$deplasman = $r['deplasman'];
$sonuc = $r['macsonucu'];
$parcala = explode("-",$sonuc);
$evsahibigol = $parcala[0];
$deplasmangol = $parcala[1];

$ilkyarisonucu = $r['ilkyarisonucu'];
$ilkyariparcalama = explode("-",$ilkyarisonucu);
$evsahibiiygol = $ilkyariparcalama[0];
$deplasmaniygol = $ilkyariparcalama[1];

if ($evsahibigol < $deplasmangol)
{
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$evsahibi','$evsahibigol','$deplasmangol','$evsahibiiygol','$deplasmaniygol','Yenildi','Evsahibi')");
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$deplasman','$deplasmangol','$evsahibigol','$deplasmaniygol','$evsahibiiygol','Yendi','Deplasman')");
}
else if ($deplasmangol < $evsahibigol)
{
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$evsahibi','$evsahibigol','$deplasmangol','$evsahibiiygol','$deplasmaniygol','Yendi','Evsahibi')");
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$deplasman','$deplasmangol','$evsahibigol','$deplasmaniygol','$evsahibiiygol','Yenildi','Deplasman')");
}
else {
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$evsahibi','$evsahibigol','$deplasmangol','$evsahibiiygol','$deplasmaniygol','Berabere','Evsahibi')");
$q1=mysql_query("INSERT INTO yeniskorlar (takimlar,attigi,yedigi,iyattigi,iyyedigi,macsonucu,evsahibideplasman) values ('$deplasman','$deplasmangol','$evsahibigol','$deplasmaniygol','$evsahibiiygol','Berabere','Deplasman')");
}
}

not: matches isimli tablodaki 'macsonucu' sütununda 0-1 2-0 gibi skorlar yazıyour. 'ilkyarısonucu' da aynı şekilde.

gibi bir şey var elimde. şimdi görüldüğü gibi buradaki if formülü ile yalnızca Maç sonucunun berabere mi, alt mı yoksa üst mü bittiğini öğrenebiliyorum. Peki ya, aynı anda Hem Üst mü Alt mı, Hem Kazandı mı Kaybetti mi, Hem ilkyarı kazandı mı kaybetti mi

gibi sütunlar eklemek istersem nasıl başedeceğim? Yani tek değişkene göre sütunları formülleyebiliyorum ancak her sütun için ayrı ayrı formülleme yapamıyorum.

 
farklı bir şekilde hallettim ancak query time inanılmaz uzun sürüyor bu formülde. 100 saniye sürüyor.

şu formülü daha pratik daha optimize kullanabilir miyiz acaba? önce ben table'ları da açıklayayım:

table: altust

takimlar | altust | macsayisi| evsahibideplasman
izmirspor...ust......1...........evsahibi
bandirmaspor.ust.....1...........deplasman
nazillispor..alt.....1...........evsahibi
alanyaspor...alt.....1...........deplasman

not: macsayısı, takımların o maç kaç maç yaptığını saydırıyor. (yani işlevsiz bir kod, aşağıdaki sum'ı kullanabilmek için yaptım.)
takımkar; sürekli tekrarlanıyor. yani bir sütunda 20 tane 10 tane aynı takımdan oluyor. (doğal olarak)

SELECT takimlar,(SELECT COUNT(*) FROM altust as altust2 WHERE altust='Alt' and altust2.takimlar = altust.takimlar)/(SELECT SUM(macsayisi) FROM altust as altust3 WHERE altust3.takimlar = altust.takimlar) as oran
FROM altust
WHERE altust='alt'
GROUP BY takimlar
ORDER BY oran DESC
  • tchuck  (11.12.11 08:37:10 ~ 08:38:08) 
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.