Ik zoek iemand die mij kan helpen met een query voor het volgende:
Ik heb 3 tabellen
- klant (id, naam, email, winkel)
- factuur (id, datum, klantid, status, totaal_bedrag)
- betalingen (id, factuurid, bedrag, datum)
Het kan zijn dat er een factuur is uitgeschreven voor 500 euro maar dat de klant een betaling heeft gedaan van 200 euro. Er staat dan dus nog 300 euro open. Nu wil ik een overzicht maken zodat er makkelijk te zien is per klant welke bedragen er nog open zijn. Zie bijlage voor wat ik uiteindelijk wil hebben.
De query moet dus kijken of in de tabel 'factuur' het veld status op 0 staat (dit betekend nog niet volledig betaald). Vervolgens moet de query de betalingen van die factuur bij elkaar op tellen (in de tabel betalingen) en deze van het 'totaal_bedrag' uit de tabel factuur afhalen.
![]()
- Hulp bij (ingewikkelde) query
-
04-10-2016, 07:44 #1
- Berichten
- 1.406
- Lid sinds
- 17 Jaar
Hulp bij (ingewikkelde) query
-
-
04-10-2016, 08:11 #2
- Berichten
- 1.406
- Lid sinds
- 17 Jaar
Re: Hulp bij (ingewikkelde) query
Onderstaande had ik al staan, alleen krijg je hiermee de totaal factuur bedragen bij elkaar opgeteld ipv wat er nog open staat.
PHP Code:$date1 = new DateTime();
$month1 = $date1->format("m");
$year1 = $date1->format("Y");
$date2 = new DateTime("-1 month");
$month2 = $date2->format("m");
$year2 = $date2->format("Y");
$date3 = new DateTime("-2 month");
$month3 = $date3->format("m");
$year3 = $date3->format("Y");
$totaal1 = $dbase->qq("SELECT SUM(bedrag) FROM factuur WHERE YEAR(datum) = '$year1' AND MONTH(datum) = '$month1' AND klantID ='$id'");
$totaal2 = $dbase->qq("SELECT SUM(bedrag) FROM factuur WHERE YEAR(datum) = '$year2' AND MONTH(datum) = '$month2' AND klantID ='$id'");
$totaal3 = $dbase->qq("SELECT SUM(bedrag) FROM factuur WHERE YEAR(datum) = '$year3' AND MONTH(datum) = '$month3' AND klantID ='$id'");
-
04-10-2016, 09:48 #3
- Berichten
- 45
- Lid sinds
- 16 Jaar
Re: Hulp bij (ingewikkelde) query
Misschien nog "AND voldaan=0;"?
-
04-10-2016, 09:57 #4
- Berichten
- 20
- Lid sinds
- 14 Jaar
Re: Hulp bij (ingewikkelde) query
Je gebruikt een aggregate function (SUM) en in 99% van de gevallen moet je dan ook een GROUP BY gebruiken. In dit geval wil je het totaal per klant hebben, je zult dus een GROUP BY klantID moeten toevoegen. Verder moet je zoals Ofyles zegt nog AND status=0 toevoegen. Misschien zou je zelfs de 3 queries tot één query kunnen samenvoegen, maar dat weet ik niet zeker en ik kan het op dit moment ook niet testen.
-
04-10-2016, 10:24 #5
- Berichten
- 1.470
- Lid sinds
- 19 Jaar
Re: Hulp bij (ingewikkelde) query
Maak even een sqlfiddle aan :-)
-
04-10-2016, 10:41 #6
- Berichten
- 20
- Lid sinds
- 14 Jaar
Re: Hulp bij (ingewikkelde) query
Dat zou ik doen als sqlfiddle voor de verandering nou eens een keer werkt, bij elke query die ik probeer uit te voeren krijg ik de foutmelding dat ik contact moet opnemen met de admin...
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic