Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL- kannasta sarakkeen yhteenlasku

jarspa [27.05.2009 13:25:06]

#

Mikä mättää tässä koodissa? Olen tunkenut joka väliin tota SUM funktioo mutta ei toimi niin ei...

<?php

$haku=mysql_query("SELECT tuotteet.koodi,hyllyn_sisalto.maara,tuotteet.nimike,hyllyn_sisalto.lot_no,hyllyn_sisalto.maara,SUM(hyllyn_sisalto.maara) AS 'kaikkiyht'  FROM tuotteet LEFT JOIN hyllyn_sisalto ON hyllyn_sisalto.tuote_koodi = tuotteet.koodi WHERE hyllyn_sisalto.$hakuehto LIKE '%$haettava%' AND hyllyn_sisalto.asiakas_koodi='$asiakas' ORDER BY tuotteet.koodi ASC");
//,SUM(IFNULL(hyllyn_sisalto.maara,0)) AS 'yhteensa_maara' SUM(IFNULL(hyllyn_sisalto.maara,0)) AS 'kaikkiyht'


$rivi=mysql_num_rows($haku);

		if ($rivi==0)
		{
		print "<br><font color=red><b>Haku ehdoilla ei löytynyt saldoja!";
		die();
		}


echo "<table border=1>";
echo "<tr><td><b>Lavat</td><td width=\"200\"><b>Tuotenumero</b></td><td><b>Nimike</b></td><td><b>Työnumero</td><td><b>Asiakas</td><td><b>YHT</b></td></tr>";

$a=0;

for ($i = 0; $i < mysql_num_rows($haku); $i++)
{


   $koodi = mysql_result($haku, $i, "tuotteet.koodi");
   $maara = mysql_result($haku, $i, "hyllyn_sisalto.maara");
   $nimike = mysql_result($haku, $i, "tuotteet.nimike");
   $tyo = mysql_result($haku, $i, "hyllyn_sisalto.lot_no");
   $yhteensa = mysql_result($haku, $i, "hyllyn_sisalto.maara");
   $kaikkiyht = mysql_result($haku, $i, "kaikkiyht");

   $haku2=mysql_query("SELECT asiakasdata1 FROM tuotteen_huomiot WHERE tuotteen_huomiot.tuote_koodi = '$koodi'");
   $toimasiakas=mysql_result($haku2,"asiakasdata1");

   $a++;

   echo "<tr>
   			<td>$a</td>
			<td width=\"200\">$koodi</td>
			<td>$nimike</td>
			<td>$tyo</td>
			<td>$toimasiakas</td>
			<td><font color=red>$yhteensa</td>
					</tr>";
}

	echo "<tr>
   			<td></td>
			<td width=\"200\"></td>
			<td></td>
			<td></td>
			<td></td>
			<td><font color=red>$kaikkiyht</td>
					</tr>";

echo "</table>";

}
?>

ankzilla [27.05.2009 14:07:28]

#

mysql_connect, mysql_select_db ja mysql_close puuttuu.

Rocceri [27.05.2009 14:11:06]

#

<?php
$yhteys = mysql_connect("localhost", "tunnus", "salis");
mysql_select_db("tietokantasi");

//Sun koodit tähän

mysql_close($yhteys);
?>

Suomennettuna tuo ankzillan vastaus.

Teuro [27.05.2009 14:28:32]

#

jarspa kirjoitti:

Mikä mättää tässä koodissa? Olen tunkenut joka väliin tota SUM funktioo mutta ei toimi niin ei.

Lyhyt vastaus kuuluu, että älä tunge sitä joka väliin. Seuraavaksi SUM funktio haluaa tulosjoukon ryhmittelyn GROUP BY määreelllä, jotta sieltä voidaan jotakin summata. Viimeiseksi voisit kertoa, että mitä haluat hakea, sekä millainen on oikea lopputulos.

Sitten ihan muuta asiaa. Minusta on huolestuttavaa lukea seuraavanlainen koodi, jos ei olla ihan varmoja siitä, että mitä ollaan tekemässä.

<?php
mysql_query(/* Raaka kysely ilman preparointia */);
?>

Kantaan ei koskaan saisi ajaa kyselyä, jonka toiminnasta ei olla ihan varmoja. No joo tuossa nyt kaiketikaan tapahdu mitään traagista, vaikka kysely sattuisi toimimaankin. Mitä mysql_error() funktio sanoo tuon epäonnistuneen kyselyn jälkeen.

jarspa [29.05.2009 22:24:20]

#

ankzilla kirjoitti:

mysql_connect, mysql_select_db ja mysql_close puuttuu.

No nuo normaaliksi luettavat yhteyden muodostamis koodit kyllä löytyy, en vaan tähän niitä laittanut koska ongelma ei ole niissä...

Metabolix [29.05.2009 22:34:31]

#

Et voi samalla kertaa valita erillisiä toimituseriä ja kokonaismäärää, koska kokonaismääriä on vain yksi mutta eriä monta. Oikeanlainen kysely kokonaismäärän hakuun olisi suunnilleen tämä:

SELECT
  tuotteet.koodi,
  tuotteet.nimike,
  SUM(hyllyn_sisalto.maara) AS saldo
FROM tuotteet
LEFT JOIN hylly ON hyllyn_sisalto.tuote_koodi = tuotteet.koodi
WHERE tuotteet.nimike = "porkkana"
GROUP BY tuotteet.koodi

Erillisiä eriä tuskin tarvitseekaan normaalisti näyttää, ja jos tarvitsee, kokonaissumman voi sitten samalla vaivalla laskea myös PHP:n puolella.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta