Ik ben bezig een systeem te maken waarmee voor een bedrijf waarmee leads of prospects vastgelegd kunnen worden: mogelijke klanten dus. Voor deze prospects moeten meerdere activiteiten (gemaild, gebeld, enz) vastgelegd kunnen worden. Om een makkelijk overzicht te kunnen krijgen, wil ik een lijst kunnen genereren van alle prospects, met de datum waarop de laatste activiteit uitgevoerd is.
Het relevante gedeelte van de database ziet er als volgt uit:

Met onderstaande query krijg ik een lijst van alle prospects, met daarbij de datum van de laatste activiteit, of NULL:
Nu moet er echter ook een search-functie inkomen, waarmee bepaalde selecties gemaakt kunnen worden. Dit werkt allemaal perfect, op 1 onderdeel na: het maken van een selectie, gebaseerd op de datum van de laatste activiteit.
Stel: ik heb een prospect met meerdere activiteiten, waarbij de laatste van gisteren was (7-7-05), en de eerste van 4-7-05. Als ik nu ga zoeken op prospects waarbij de datum van de laatste activiteit voor 6-6-05 ligt, wil ik vanzelfsprekend die genoemde prospect niet zien. Dat gebeurt echter wel.
De query die ik gebruik ik als volgt:
Het resultaat hiervan is (bijvoorbeeld):
6 Bedrijf1 4 Jul 2005
terwijl ik dit wil zien:
6 Bedrijf1 7 Jul 2005
Heeft iemand enig idee wat ik verkeerd doe in mijn query?
Het gaat btw om MySQL, versie < 4.1, dus subqueries is geen optie.
Het relevante gedeelte van de database ziet er als volgt uit:

Met onderstaande query krijg ik een lijst van alle prospects, met daarbij de datum van de laatste activiteit, of NULL:
code:
1
2
3
4
5
| SELECT prospects.prospect_id, bedrijfsnaam, date_format( activities.date, '%e %b %Y' ) AS date FROM prospects LEFT JOIN activities ON activities.prospect_id = prospects.prospect_id GROUP BY prospects.prospect_id ORDER BY unix_timestamp( activities.date ) ASC |
Nu moet er echter ook een search-functie inkomen, waarmee bepaalde selecties gemaakt kunnen worden. Dit werkt allemaal perfect, op 1 onderdeel na: het maken van een selectie, gebaseerd op de datum van de laatste activiteit.
Stel: ik heb een prospect met meerdere activiteiten, waarbij de laatste van gisteren was (7-7-05), en de eerste van 4-7-05. Als ik nu ga zoeken op prospects waarbij de datum van de laatste activiteit voor 6-6-05 ligt, wil ik vanzelfsprekend die genoemde prospect niet zien. Dat gebeurt echter wel.
De query die ik gebruik ik als volgt:
code:
1
2
3
4
5
| SELECT prospects.prospect_id, bedrijfsnaam, date_format(activities.date, '%e %b %Y') AS date FROM prospects LEFT JOIN activities ON activities.prospect_id = prospects.prospect_id WHERE unix_timestamp( activities.date ) < unix_timestamp( '2005-7-6' ) GROUP BY prospects.prospect_id |
Het resultaat hiervan is (bijvoorbeeld):
6 Bedrijf1 4 Jul 2005
terwijl ik dit wil zien:
6 Bedrijf1 7 Jul 2005
Heeft iemand enig idee wat ik verkeerd doe in mijn query?
Het gaat btw om MySQL, versie < 4.1, dus subqueries is geen optie.