Ik heb hier 3 tabellen:

contacten
historiek
taken

De relatie tussen de contacten en historiek is de historiek.contact_id die gelijk is aan de contacten.id tabel. Maar er is geen relatie tussen de contacten en taken tabel of tussen de historiek en taken tabel. Toch zou ik deze in de query willen opnemen omdat ik van de taken het id zou nodig hebben.
De query zou er als volgt moeten uitzien:

		            SELECT 
		                h.actiedatum,
				h.contact_id,
				h.historiek,
				h.id,
				h.type,
				c.bedrijfsnaam,
				c.voornaam,
				c.achternaam,
                                t.id
			    FROM 
				historiek h
			    JOIN
				contacten c
			    ON
				h.contact_id = c.id
                            JOIN
                                taken t
                            ON
                                ???
			    WHERE 
				actiedatum <= CURRENT_DATE AND afgewerkt <> 'ja' AND actiedatum <> '0000-00-00' AND naam = '". $_SESSION['username'] ."'


Maar wat moet op de ??? komen? Of heb ik die ON niet altijd nodig?
Je moet projecten zien als een soort van koppeltabel tussen contacten en taken, dus je joined eerst projecten aan contacten en dan taken aan projecten.
Ik heb nu een nieuwe query maar resultaten zijn niet correct.

SELECT 
   h.actiedatum,
   h.contact_id,
   h.historiek,
   h.id,
   h.type,
   c.bedrijfsnaam,
   c.voornaam,
   c.achternaam,
   t.id as tid
FROM 
   historiek h
JOIN
   contacten c
ON
   h.contact_id = c.id
JOIN
   projecten p
ON
   p.contact_id = c.id
JOIN
   taken t
ON
   t.project_id = p.id
WHERE 
   h.actiedatum <= CURRENT_DATE AND h.afgewerkt <> 'ja' AND h.actiedatum <> '0000-00-00' 
";

Mijn wilde gok is dat je dubbele records krijgt, maar je geeft niet aan waarom de resultaten niet kloppen dus het is maar een gok.

Je wilt iets met taak_id maar dit komt niet in de query voor.

Kortom, ben wat duidelijker in wat je precies wilt bereiken.
Ik krijg inderdaad dubbele records en andere records die ik zou moeten zien komen niet naar boven. Het is iets vreemds die ik moeilijk kan beschrijven. Ik had 22 results maar nu met bovenstaande query heb ik nog 1' records over waarvan al meer of de helft dubbele. Ik heb de taak_id toegevoegd want die stond er inderdaad niet in.
Weet je dat als je op StackOverflow zo weinig informatie geeft gewoon het topic op hold wordt gezet.

Je zit op PHPhulp.nl en niet op vriendenvanjomanda.hz, dus geef voldoende en duidelijke informatie.
Dus voorbeeld gegevens en het uiteindelijke resultaat wat je eruit wilt hebben.
De query in het begin werkt perfect. Alleen wil ik nu ook de mogelijkheid voorzien om mensen een taak direct te laten aanpassen vanuit deze tool. Vandaar heb ik het taak_id ook nodig. Maar aangezien ik geen relatie heb met contacten en historiek tabel en taken zit dit beetje moeilijk. Van die taken moet ik enkel het ID hebben zodat ik dat kan oproepen op een andere pagina om die taak te bewerken.

Ik had 22 resultaten en geen dubbele met de eerste query, nu met de nieuwe heb ik maar 14 records meer over en die bestaan uit maar 2 records meer die meerdere keren herhaald worden.

[size=xsmall]Toevoeging op 13/01/2015 20:24:34:[/size]

Misschien nog een extra woordje uitleg. Het betreft hier een overzicht pagina met alle activiteiten die iemand moet doen, een soort todo lijst. Die hangen ook vast aan een contactpersoon waar je iets moet mee doen, vandaar de link met de contacten zodat de naam van die persoon tevoorschijn komt ipv enkel maar een ID. In die historiek kan je kiezen of je een historiek item wilt maken als notitie, taak of todo. Als notitie komt die in een tabel, als todo in deze overzichtlijst en als taak ook in de overzichtlijst maar ook nog eens in de projectentool. Dit is enkel maar allemaal ter info / background informatie. Want hier is het enige doel die overzichtlijst te maken.
Als een contact geen projecten heeft of als een project geen taken heeft, zul je deze contacten dus niet meer zien.
Een contact met meerdere projecten of projecten met meerdere taken zie je vaker.

Het 1e kun je oplossen door de JOIN naar projecten en de JOIN naar taken te vervangen door LEFT OUTER JOIN.
Er kunnen inderdaad 1 of meerdere projecten aan contacten hangen of 1 of meerdere projecten zijn met 1 of meerdere taken.
Met jouw aanpassing door te voeren zie ik nu meerdere juiste records verschijnen maar als er blijkbaar projecten aanwezig zijn (en dus ook taken) voor die bepaalde personen krijg ik die records dubbel en het aantal keren dat ze dubbel verschijnen = het aantal taken dat eronder zitten. Personen die geen projecten hebben en dus ook geen taken komen maar 1 keer voor.
[offtopic]
Ik heb vriendenvanjomanda.hz zojuist toegevoegd aan mijn favorieten. #ROFLMAOWPIMP
[/offtopic]
Voor zover ik het kan beoordelen moet je gewoon twee queries uitvoeren, één voor de historie en één voor de taken.

Reageren