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>"; } ?>
mysql_connect, mysql_select_db ja mysql_close puuttuu.
<?php $yhteys = mysql_connect("localhost", "tunnus", "salis"); mysql_select_db("tietokantasi"); //Sun koodit tähän mysql_close($yhteys); ?>
Suomennettuna tuo ankzillan vastaus.
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.
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ä...
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.