complexe SQL query
Nu zijn er 2 velden, bedrag daar staat het bedrag in als het volledig betaald is. Als het nog niet volledig betaald is, dan staat er in de kolom 'saldo' het resterende bedrag.
Dus lidmaatschap is 50 euro. Als er 30 euro aanbetaald is, dan staat er in saldo 20 euro. Wanneer dit betaald is, dan is de datum in een ander veld ingevuld.
Nu ben ik bezig geweest om met een database query die leden te selecteren waar nog iets open staat, maar ik krijg het niet voor elkaar.
Ik heb alleen de totaal niet betaald leden dmv: bedrag NOT between 1 and 100 eruit geselecteerd.
dmv een OR heb ik het ook geprobeerd, maar dat werkt niet.
Het moet zoiets worden van. SELECT * FROM bedrag NOT between 1 AND 100 OR bedrag mag leeg zijn als saldo is gevuld en betaalddatum is leeg.
Kortom... wie weet raad?
Dan kunnen we wat makkelijker kijken. Want het kan goed met 1 query.
Zou inderdaad handig zijn om de structuur van je tabel te plaatsen ;-)
Kan dit in 1 query dan. Het zou misschien moeten kunnen, maar hoe zou ik niet weten. Het zou fijn zijn als iemand me het goede pad in kan sturen.
CREATE TABLE `dbinschrijvingen` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`naam` varchar(40) NOT NULL default '',
`voornaam` varchar(40) NOT NULL default '',
`geboortedatumdag` varchar(9) NOT NULL default '',
`geboortedatummaand` varchar(9) NOT NULL default '',
`geboortedatumjaar` smallint(4) NOT NULL default '0',
`adres` varchar(40) NOT NULL default '',
`postcode` varchar(7) NOT NULL default '',
`woonplaats` varchar(40) NOT NULL default '',
`telefoonnummer` varchar(11) NOT NULL default '',
`emailadres` varchar(40) NOT NULL default '',
`locatie` varchar(40) NOT NULL default '',
`tussenvoegsel` varchar(10) NOT NULL default '',
`bedrag` decimal(10,2) NOT NULL default '0.00',
`betaald1` date NOT NULL default '0000-00-00',
`bankkas1` varchar(10) NOT NULL default '',
`saldo` decimal(10,2) NOT NULL default '0.00',
`betaald2` date NOT NULL default '0000-00-00',
`bankkas2` varchar(10) NOT NULL default '',
`aanmaning1` date NOT NULL default '0000-00-00',
`aanmaning2` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=89 DEFAULT CHARSET=utf8 AUTO_INCREMENT=89 ;
en
CREATE TABLE `locatie` (
`id` smallint(5) unsigned NOT NULL auto_increment,
`plaats` text,
`aanmaning` varchar(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
Je zegt dat bedrag leeg mag zijn maar ik zie een NOT NULL staan
mmm... daar zeg je wat.... dat is simpel aan te passen.... maar dan blijft nog steeds over dat het met een query opgeroepen moet worden.
Maar wellict werkt zoiets:
Code (php)
1
2
3
4
2
3
4
SELECT id, naam, bedrag
FROM dbinschrijvingen
WHERE bedrag != '.$volledig_bedrag.'
ORDER BY saldo DESC
FROM dbinschrijvingen
WHERE bedrag != '.$volledig_bedrag.'
ORDER BY saldo DESC
Even (via PHP) $volledig_bedrag vullen (met jouw voorbeeld zou dat 50 zijn).
En dan krijg je alle die nog niet alles betaald hebben.
Thanx.
er moet toch echt iets komen met allemaal AND en OR anders werkt het niet.
Zoiets van:
SELECT * FROM dbinschrijvingen WHERE (bedrag NOT between 1 AND 100) OR (bedrag mag leeg zijn als saldo is gevuld en betaalddatum is leeg)
UNION
SELECT * FROM dbinschrijvingen WHERE
bedrag mag leeg zijn als saldo is gevuld en betaalddatum is leeg
Iemand die het verder weet.. met CASE of IT/THEN ofzo?
lidmaatschap 50 euro, je zoekt iedereen die:
of nog niet betaald heeft: bedrag = 0 en saldo = 50
of die een deel betaald heeft: bedrag < 50 en saldo >0
maar als alles betaald is:
bedrag = 50
saldo = 0
Probeer eens:
SELECT id, naam
FROM dbinschrijvingen
WHERE (bedrag < 50 OR saldo >0)
Ik kom er echt niet uit, maar elke hulp is welkom !
SELECT *
FROM dbinschrijvingen
WHERE saldo > 0
Wat staat in welke tabel (wat sla je op in welk veld) en welke gegevens zoek je?
Gewijzigd op 01/01/1970 01:00:00 door Arnold C
`geboortedatumdag` varchar(9) NOT NULL default '',
`geboortedatummaand` varchar(9) NOT NULL default '',
`geboortedatumjaar` smallint(4) NOT NULL default '0',
Waarom niet gewoon een DATE veld?
Ik denk dat het een vrij oud systeem is ;)! De databasestuctuur kan heel goed genormaliseerd worden. NAW gegevens scheiden van bankzaken e.d.