Ik moet twee tabellen samenvoegen.

Tabel1: Hierin staan de namen en de url's van de linken. Ik heb nodig uit deze tabel (partners) de "naam" en de "url".

Tabel2: Hierin zitten de kliks van die linken. Ik heb nodig uit deze tabel (partnerKliks) de "datumtijd" en de "url_id".
Bij iedere klik op een link wordt hier een nieuwe rij aangemaakt. Als je de datumtijd optelt van de bijgehorende url_id dan weet je hoevaak er op die bewuste link geklikt is.

Ik had al iets geprobeerd maar het werkt niet omdat ik niet goed met dit soort codes uit de voeten kan.

Ik wil graag dat je de best bezochte linkpartners in de top 10 kunt zien van deze maand.

<?php
//Laat de 10 best bezochte partners zien van deze maand
$queryKlik = "
SELECT p.naam, p.id, COUNT(datumtijd) as maandtotaal
FROM partners AS p, partnerKliks
WHERE MONTH(datumtijd) = MONTH(CURDATE()) AND YEAR(datumtijd) = YEAR(CURDATE()) AND url_id = ". $_GET['id']."
ORDER BY maandtotaal
DESC LIMIT 0,10";
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 partners niet weergeven, probeer het later opnieuw.");
//geeft de top 10 aan van 1 tot 10
$teller=1;
while ($rowKlik = mysql_fetch_assoc ($resultKlik)) {
echo '<td align="left" width="25%">';
echo $teller . '.<a href="tussenpagina.php?id='. $rowKlik['id'].'" target="_blank">'.$rowKlik['naam'] . '</a></td>';
echo '<td class="kliks10" width="25%">['.$rowKlik['maandtotaal'].']</td>' ;
$teller++;
?>

<?
$queryKlik = "
SELECT
p.naam AS naam,
p.id AS id,
COUNT(partnerKliks.datumtijd) as maandtotaal
FROM
partners AS p,
partnerKliks
WHERE
MONTH(partnerKliks.datumtijd) = MONTH(CURDATE())
AND
YEAR(partnerKliks.datumtijd) = YEAR(CURDATE())
AND
p.url_id = ". $_GET['id']."
ORDER BY
maandtotaal
DESC LIMIT 0,10";
?>
Benoem wel overal de tabel waar de gegevens uit moeten komen.

Twijfel: Ik vraag me af of de COUNT() wel gaat werken/is toegestaan. Het kan zijn dat je dit in een subquery moet zetten. Je zou het eigenlijk in PostgreSQL of een andere (betere) database dan MySQL moeten proberen. MySQL slikt het wel, ik weet alleen niet of de gegevens ook kloppen. MySQL heeft problemen met GROUP BY, die o.a. bij COUNT() hoort.
@Frank
Ik kreeg geen mailtje van je bericht vandaar dat ik wat later reageer.

Van tabellen samenvoegen snap ik echt niet veel, zit erg ingewikkeld in elkaar.
En wat je bij "twijfel" hebt neergezet is helemaal abracadabra voor me.

Helaas werkt de onderstaande query niet.
De foutmelding is dat hij de database niet kan weergeven.

<?php
//Laat de 10 best bezochte partners zien van deze maand
$queryKlik = "
SELECT
p.naam AS naam,
p.id AS id,
COUNT(partnerKliks.datumtijd) as maandtotaal
FROM
partners AS p,
partnerKliks
WHERE
MONTH(partnerKliks.datumtijd) = MONTH(CURDATE())
AND
YEAR(partnerKliks.datumtijd) = YEAR(CURDATE())
AND
p.url_id = ". $_GET['id']."
ORDER BY
maandtotaal
DESC LIMIT 0,10";
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 partners niet weergeven, probeer het later opnieuw.");
//geeft de top 10 aan van 1 tot 10
$teller=1;
while ($rowKlik = mysql_fetch_assoc ($resultKlik)) {
echo '<td align="left" width="25%">';
echo $teller . '.<a href="tussenpagina.php?id='. $rowKlik['id'].'" target="_blank">'.$rowKlik['naam'] . '</a></td>';
echo '<td class="kliks10" width="25%">['.$rowKlik['maandtotaal'].']</td>' ;
$teller++;
?>
Ik heb het er zo achter gezet:

<?php
DESC LIMIT 0,10" or die(mysql_error());
?>

Hopelijk is dat goed. Maar hij geeft gewoon de foutmelding die ik hier achter heb gezet:

<?php
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 partners niet weergeven, probeer het later opnieuw.");
?>
<?php
$resultKlik = mysql_query($queryKlik) or die ("Sorry maar ik kan de beste 10 partners niet weergeven, probeer het later opnieuw.");
?>
mag (tijdelijk) worden:
<?php
$resultKlik = mysql_query($queryKlik) or die (mysql_error());
?>
Dit is de foutmelding:

Unknown column 'p.url_id' in 'where clause'
Elsy schreef op 17.10.2006 16:22
Dit is de foutmelding:

Unknown column 'p.url_id' in 'where clause'
Dat klopt helemaal! Deze kolom staat namelijk in de tabel partnerKliks.

p.url_id moet dus worden partnerKliks.url_id
Oké, dan nu deze foutmelding:

Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause
Daar was ik al bang voor, gelukkig geeft zelfs MySQL hier een foutmelding op.

Oplossing: 2 queries of 1 query met een subquery maken. De COUNT() moet in aparte query of in de subquery komen te staan.
Oke, maar hij moet toch de gegevens uit twee tabellen halen.
In de eerst staan de naam van de link en de url en in de tweede tabel de kliks.

Hoe weet hij dan dat die ene link bij welke kliks horen.

Reageren