Ik zit alweer met de code voor het samenvoegen van twee tabellen.
Dit blijft ingewikkeld.

Ik heb een tabel "linken" en een tabel "kliks".
Ik wil graag de best bezochte link laten zien.

Dit is de code die ik heb:

<?php
$queryTop = "
SELECT
1.link_id,
1.link_naam,
1.link_website,
1.link_kadobon,
l.link_plaatje,
l.link_omschrijving,
l.link_prijs,
COUNT(k.datumtijd) AS aantal_kliks
FROM
kliks AS k
INNER JOIN
linken AS 1
ON
k.link_id = 1.link_id
WHERE
MONTH(k.datumtijd ) = MONTH( CURDATE( ) )
AND
YEAR(k.datumtijd ) = YEAR( CURDATE() )
GROUP BY 1.link_id
ORDER BY aantal_kliks DESC
LIMIT 0,2";
?>

En dit de 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 '1 ON k.link_id = l.link_id WHERE MONTH(k.datumtijd ) = MONTH( CURDATE( ) ) AND Y' at line 13

Dit zijn de tabellen:





ps. kom hier morgen op terug.
Je selecteert de links toch? en niet de kliks, dit is beter:

FROM
linken AS 1
JOIN
kliks AS k
ON
de JOIN is LEFT of RIGHT je ziet maar wat het best uitkomt
linken AS 1

Volgens mij mag een alias niet met een getal beginnen of een getal zijn.
Jan Koehoorn schreef op 14.11.2006 22:59
linken AS 1

Volgens mij mag een alias niet met een getal beginnen of een getal zijn.
Ik weet het wel zeker! Ook voor een alias gelden de normale regels wat betreft de naamgevingen.
@Jan en Frank, volgens mij is die '1' gewoon een L, maar een kleine letter L wil nog al eens lijken op een 1.

Zeker als je kijkt naar de alias van de eerste tabel is dat logischer dan een 1 (één).
@Jan en Frank

Het is een kleine letter L maar dat zie je niet goed.

@Stefan

Het werkt nu hoe jij het zei, omdraaien en "GROUP BY k.link_id" nu op "k" zetten.

Bedankt en tot snel denk ik :)
Als ik de tekst uit je oorspronkelijke post kopieer, krijg ik:
linken AS 1

Als ik met de hand een kleine letter 'L' typ, krijg ik:
linken AS l

Het was dus wel degelijk een cijfer. Maar: het is opgelost en dat is mooi ;-)
edit: typfout


@Jan

Ik moet je gelijk geven, als ik nu naar boven scroll naar mijn eerste post, zie ik inderdaad eentjes staan en de letter L.

Ik kan dat in Dreamweaver niet zien maar hier zie ik het wel. Vandaar dat er nog iets anders niet helemaal lukte. Misschien de volgende keer beter een andere letter gebruiken.

Even om te testen of ik ze nu allemaal goed heb staan:

<?php
$queryTop = "
SELECT
l.link_id,
l.link_naam,
l.link_website,
l.link_kadobon,
l.link_plaatje,
l.link_omschrijving,
l.link_prijs,
COUNT(k.datumtijd) AS aantal_kliks
FROM
linken AS l
JOIN
kliks AS k
ON
k.link_id = l.link_id
WHERE
MONTH(k.datumtijd ) = MONTH( CURDATE( ) )
AND
YEAR(k.datumtijd ) = YEAR( CURDATE() )
GROUP BY k.link_id
ORDER BY aantal_kliks DESC
LIMIT 0,2";
?>

Reageren