[MySQL] SELECT ... AS a, doorrekenen met a

Pagina: 1
Acties:

  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 26-03 21:19
Uit de documentatie van MySQL werd ik helaas niet veel wijzer en ook google liet me in de steek. Ik heb op school wel DataBases gehad, maar kan me niet herinneren of ik dit gehad heb en hoe dit moet.

Ik heb nu deze query:
code:
1
2
3
4
5
6
SELECT omschrijving, product.code, prijs,
 SUM(actie) AS voorraad, vastevoorraad,
 (vastevoorraad - SUM(actie)) AS tekopen
FROM `product`, `handeling`
WHERE product.code = handeling.code
GROUP BY product.code


En ik zou graag willen dat het zo zou werken:
code:
1
2
3
4
5
6
7
SELECT omschrijving, product.code, prijs,
  SUM(actie) AS voorraad, vastevoorraad,
  (vastevoorraad - voorraad) AS tekopen,
  tekopen*prijs AS tprijs
FROM `product`, `handeling`
WHERE product.code = handeling.code
GROUP BY product.code

maar helaas

Is er een nette oplossing voor of moet ik echt dit gebruiken:
code:
1
2
3
4
5
6
7
SELECT omschrijving, product.code, prijs,
  SUM(actie) AS voorraad, vastevoorraad,
  (vastevoorraad - SUM(actie)) AS tekopen,
  (vastevoorraad - SUM(actie))*prijs AS tprijs
FROM `product`, `handeling`
WHERE product.code = handeling.code
GROUP BY product.code


Hoe kan ik er tevens voor zorgen dat "tekopen" op 0 wordt gezet als "voorraad" groter is dan "vastevoorraad"

//Is het ook mogelijk om "tekopen" op te nemen in de WHERE-voorwaarden?
//WHERE product.code = handeling.code AND tekopen > 0
//werkt niet

// dit moest in HAVING natuurlijk |:(

[ Voor 16% gewijzigd door Fl4sh3r op 07-03-2004 17:00 . Reden: nog een tweede vraagje erbij :) ]


  • bigtree
  • Registratie: Oktober 2000
  • Laatst online: 31-03 15:20
Fl4sh3r schreef op 07 maart 2004 @ 16:30:
[...]
Is er een nette oplossing voor of moet ik echt dit gebruiken:
code:
1
2
3
4
5
6
7
SELECT omschrijving, product.code, prijs,
  SUM(actie) AS voorraad, vastevoorraad,
  (vastevoorraad - SUM(actie)) AS tekopen,
  (vastevoorraad - SUM(actie))*prijs AS tprijs
FROM `product`, `handeling`
WHERE product.code = handeling.code
GROUP BY product.code
Dit lijkt me een nette oplossing, toch? ;) En nee, het gaat echt niet anders werken bij aggregate functions.
Hoe kan ik er tevens voor zorgen dat "tekopen" op 0 wordt gezet als "voorraad" groter is dan "vastevoorraad"
Dat wordt zo iets:
SQL:
1
2
3
SELECT (...), IF (
SUM( actie ) > vastevoorraad, 0, vastevoorraad - SUM( actie ) 
) AS tekopen

Lekker woordenboek, als je niet eens weet dat vandalen met een 'n' is.


  • Fl4sh3r
  • Registratie: Juni 2002
  • Laatst online: 26-03 21:19
Bedankt

Ik kan weer verder :)