Deze code laat maar 4 linkpartners zien ipv de 7 die ik er nu in heb staan.

Hoe kan dit?

<?php

$queryKliks = "
SELECT
p.partner_id,
p.partner_naam,
p.partner_url,
COUNT(pk.datumtijd) AS aantal_kliks
FROM
klikspartners AS pk
INNER JOIN
partners AS p
ON
pk.partner_id = p.partner_id
WHERE
YEAR(pk.datumtijd ) = YEAR( CURDATE() )
GROUP BY p.partner_id
ORDER BY RAND()";


$resultKliks = mysql_query($queryKliks) or die (mysql_error());

while ($rowKliks = mysql_fetch_object($resultKliks))
{
echo '<a href="partneruit.php?partner_id='. $rowKliks->partner_id.'" title="'. $rowKliks->partner_naam.'" target="_blank">-'.$rowKliks->partner_naam.'</a>&nbsp;['.$rowKliks->aantal_kliks.']<br>';
}

?>
Dat komt door de INNER JOIN Elsy, die haalt ALLEEN de linkpartners op die in Beide tabellen voorkomen.
Ik weet niet zeker, maar volgens mij moet je er een OUTER JOIN (of RIGHT JOIN, als ik het goed heb) van maken.
RIGHT of LEFT JOIN maakt geen verschil.
En OUTER JOIN geeft deze foutmelding:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'OUTER JOIN partners AS p1 ON pk.partner_id = p1.partner_id WHERE YEAR(pk.datumti' at line 8
Doe eens een testquery:

SELECT *
FROM
partners
LEFT JOIN klikspartners
ON partners.partner_id = klikspartners.partner_id
Als ik dit doe dan krijg ik alle 8 linkpartners te zien en ze herhalen zich zovaak als er op geklikt is.

Dat betekent dus dat je voor ELKE klik een nieuwe record aanmaakt in de tabel klikspartners?
Ja, omdat ik wil kunnen laten zien hoeveel kliks er per maand of per jaar waren.
Okee, wat levert deze query op?

SELECT partners.naam, COUNT( klikspartners.id ) AS totaal
FROM partners
LEFT JOIN klikspartners ON partners.id = klikspartners.partner_id
GROUP BY partners.naam
Elsy schreef op 29.10.2006 21:01
Ja, omdat ik wil kunnen laten zien hoeveel kliks er per maand of per jaar waren.


Je kan dan toch in een apart tabelletje tellen? Elke keer als er geklikt wordt $waarde + 1
@ Thomas: dan wordt het wel moeilijk om het per maand te laten zien. Je hebt dan namelijk alleen een totaal zonder DATETIME.
EDIT: ik had totaal nog niet gewijzigd, volgens mij werkt het nu, even kijken.


Hij laat nu alle partners zien maar niet het aantal kliks erachter:



Ik heb jouw code even aangepast met de juiste tabel namen.

<?php
$queryKliks = "
SELECT partners.partner_naam, COUNT( klikspartners.id ) AS totaal
FROM partners
LEFT JOIN klikspartners ON partners.partner_id = klikspartners.partner_id
GROUP BY partners.partner_naam";
?>

Reageren