[PHP/MySQL] Totale kosten van een winkelwagentje.

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
Hallo Tweakers,

Ik ben al enige dagen aan het klooien om de juiste query te krijgen. Wat ik wil is de totale kosten (in centen) van een winkelwagentje berekenen. Dit heb ik geprobeerd om zo te doen:

MySQL:
1
SELECT (SUM(ammount) * producten.prijs) AS total FROM cart INNER JOIN producten ON (cart.product = producten.id) WHERE cartid='13'

Maar dat ging niet goed. Kreeg maar rare getallen.

Ik maak gebruik van 2 tabellen:

Table: producten
idprijsimgtitle
11300boeket_001.pngBoeket 001
2950boeket_002.pngBoeket 002
3750boeket_003.pngBoeket 003



Table: cart [Het winkelwagentje]
idcartidproductammount
113123
21332


Nu wil ik dus de totale kosten (prijs in centen) krijgen van het winkelwagentje met cartid 13, de tabellen cart.cartid moet het zelfde zijn als producten.id

Maar om een totaal plaatje te krijgen. Is het dan mogelijk om het in een enkele query te krijgen?

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

als je nou de SUM(amount * prijs) zou bepalen, ipv de SUM(amount) * prijs zou het vast beter gaan. Het laatste is iets waar MySQL je toevallig niet heel goed tegen beschermd, maar in andere sql-databases zou die query niet geaccepteerd worden.

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

En als je hetgene wat ACM zegt combineert met een GROUP BY statement, dan moet je er wel uitkomen denk ik :)

Acties:
  • 0 Henk 'm!

  • xehbit
  • Registratie: Februari 2009
  • Laatst online: 26-08 22:19
ACM schreef op donderdag 17 maart 2011 @ 21:20:
als je nou de SUM(amount * prijs) zou bepalen, ipv de SUM(amount) * prijs zou het vast beter gaan. Het laatste is iets waar MySQL je toevallig niet heel goed tegen beschermd, maar in andere sql-databases zou die query niet geaccepteerd worden.
Yes, bedankt. Dit is precies wat er fout is. Na dit te hebben aangepast is het geluk. Bedankt!

Rekenen in query's werkt dus niet helemaal zoals ik het in gedachte had.

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Bee.nl schreef op donderdag 17 maart 2011 @ 21:22:
En als je hetgene wat ACM zegt combineert met een GROUP BY statement, dan moet je er wel uitkomen denk ik :)
Group by? Voor de totaalprijs van 1 winkelmandje heb je helemaal geen group by nodig.
Dragon707 schreef op donderdag 17 maart 2011 @ 21:31:
Rekenen in query's werkt dus niet helemaal zoals ik het in gedachte had.
Als je (effectief) een syntactische fout maakt, dan kan je nog zo goed denken, maar krijg je niet het gewenste resultaat ;)

Maar je zal bij SQL inderdaad rekening ermee moeten houden dat je min of meer met Sets werkt en steeds weer nieuwe Sets maakt. Zelfs je aggregation via die sum maakt er uiteindelijk weer een nieuwe Set van (maar dan met 1 records, tenzij je group by om eoa reden gebruikt natuurlijk).

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

ACM schreef op donderdag 17 maart 2011 @ 21:35:
Group by? Voor de totaalprijs van 1 winkelmandje heb je helemaal geen group by nodig.
Owja ik moet beter lezen, ik dacht dat het om meerdere ging :F
Pagina: 1