[]
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.
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
ş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