Samenvoegen van 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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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";
?>
$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.
de JOIN is LEFT of RIGHT je ziet maar wat het best uitkomt
Je selecteert de links toch? en niet de kliks, dit is beter:Volgens mij mag een alias niet met een getal beginnen of een getal zijn.
Jan Koehoorn schreef op 14.11.2006 22:59:
Ik weet het wel zeker! Ook voor een alias gelden de normale regels wat betreft de naamgevingen.linken AS 1
Volgens mij mag een alias niet met een getal beginnen of een getal zijn.
Volgens mij mag een alias niet met een getal beginnen of een getal zijn.
Zeker als je kijkt naar de alias van de eerste tabel is dat logischer dan een 1 (één).
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 :)
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 ;-)
@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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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";
?>
$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";
?>