login  Naam:   Wachtwoord: 
Registreer je!
 Forum

rekenen in mysql (Opgelost)

Offline Stefan14 - 01/01/2010 18:02 (laatste wijziging 02/01/2010 16:59)
Avatar van Stefan14PHP gevorderde Ik wil met onderstaande query een berekening uitvoeren, maar blijkbaar kan dat niet op deze manier.
de uitkomst 'aantaldagen' kan niet zo gebruikt worden, want dan noemt hij dit een 'unknown column'.
Hoe zou dit wel moeten?

  1. <?php
  2. $query6 = "SELECT
  3. DATEDIFF(uitcheckdatum, incheckdatum) AS aantaldagen,
  4. (aantaldagen * dagprijs) AS totaalprijs
  5. FROM
  6. bezoekers
  7. WHERE
  8. hotelID = ".mysql_real_escape_string(gethotelID($_SESSION['userID']))."
  9. AND
  10. kamerID = ".mysql_real_escape_string($row['id'])."
  11. AND
  12. uitcheckdatum < NOW()";
  13. $result6 = mysql_query($query6) or die (mysql_error());
  14. $row6 = mysql_fetch_assoc($result6);
  15. $totaalomzet = $row6['totaalprijs'];
  16. ?>

4 antwoorden

Gesponsorde links
Offline Rik - 01/01/2010 19:05
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Mysql probeert aantaldagen als veld te zoeken. Dat kan die vinden dus vandaar de foutmelding. Je kunt het oplossen met een subquery op deze manier:
  1. SELECT sub.getal getal, 4 * sub.getal berekening FROM (SELECT 6 getal) sub;
Dat is eenvoudig toe te passen op de code die je nu hebt.
Offline Stefan14 - 01/01/2010 19:20
Avatar van Stefan14 PHP gevorderde Ik weet het principe van subquery's wel, maar zoals jij nu die query neerzet begrijp ik er eigenlijk niets van.
Offline Rik - 01/01/2010 19:37
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Misschien is het duidelijker als ik er steeds het AS statement bij zet:
  1. SELECT sub.getal AS getal, 4 * sub.getal AS berekening FROM (SELECT 6 AS getal) AS sub;
Op zich is AS overbodig en doet mysql exact hetzelfde als je het weg laat, maar het is zo wel duidelijker.

Eerst wordt een getal geselecteerd in de subquery. Dat is hier 6, maar bij jou zou dat dus aantaldagen worden. Het resultaat van die subquery sla je op als een soort nep tabel die je even sub noemt. In de eigenlijke query selecteer je daar weer dat getal uit en reken je er mee. In dit voorbeeld vermenigvuldig ik even met 4 waarna ik het onder de naam berekening ophaal.
Offline Stefan14 - 01/01/2010 21:57
Avatar van Stefan14 PHP gevorderde Ik heb er dit van gemaakt:

  1. <?php
  2. $query6 = "SELECT
  3. sub.aantaldagen * dagprijs AS totaalprijs
  4. FROM
  5. (SELECT
  6. DATEDIFF(uitcheckdatum, incheckdatum) AS aantaldagen
  7. FROM
  8. bezoekers
  9. WHERE
  10. hotelID = ".mysql_real_escape_string(gethotelID($_SESSION['userID']))."
  11. AND
  12. kamerID = ".mysql_real_escape_string($row['id'])."
  13. AND
  14. uitcheckdatum < NOW()) AS sub,
  15. bezoekers
  16. WHERE
  17. hotelID = ".mysql_real_escape_string(gethotelID($_SESSION['userID']))."
  18. AND
  19. kamerID = ".mysql_real_escape_string($row['id'])."
  20. AND
  21. uitcheckdatum < NOW()";
  22. ?>


En deze lijkt te werken, komt in ieder geval de goede uitkomst uit.
Ziet er wel een beetje dubbelop uit, als ik eerlijk ben, maargoed.
Bedankt!  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.182s