IP bezoekers sorteren op views

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Roy

Roy

30/10/2007 10:32:00
Quote Anchor link
Ik heb een simpel systeempje in mijn admin, zodat je kan zien hoeveel views er binnen komen per IP. Je kan dan een dag selecteren en bekijken welk IP hoeveel keer gekeken heeft.

Nu wil ik het zo sorteren, dat hij het rangschikt op het aantal views, de meeste moet bovenaan komen te staan. Normaal doe je dit in je query met "order by views" bijvoorbeeld, maar de aantal views staan niet in de database, die reken ik namelijk zo uit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
"SELECT COUNT(*) AS total FROM bezoekers WHERE datum = '$datum' AND ipadres = '$lijst->ipadres'"
?>


Hoe kan ik het nou dus rangschikken op het aantal views?
 
PHP hulp

PHP hulp

21/11/2024 17:00:40
 
Nicoow Unknown

Nicoow Unknown

30/10/2007 10:40:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT COUNT(views) AS total
FROM bezoekers
WHERE datum = '" .$datum. "'
AND ipadres = '" .$lijst->ipadres. "'
ORDER BY total DESC"

zoiets?
 
Roy

Roy

30/10/2007 10:42:00
Quote Anchor link
In jouw query bestaat dan toch de tabel views?
 
Jan Koehoorn

Jan Koehoorn

30/10/2007 10:43:00
Quote Anchor link
Gewoon die alias in je ORDER BY zoals gezegd. Test het maar even.
 
Nicoow Unknown

Nicoow Unknown

30/10/2007 10:46:00
Quote Anchor link
je kan natuurlijk ook de ip adressen counten
 
Roy

Roy

30/10/2007 11:55:00
Quote Anchor link
@ Jan:

Maar ik heb deze query om het uit de database te halen:

$sql = "SELECT id, ipadres, datum FROM bezoekers WHERE datum = '$datum' GROUP BY ipadres ORDER BY id";

Wat moet ik dan doen bij ORDER BY?
 
Joren de Wit

Joren de Wit

30/10/2007 12:00:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$sql
= "
    SELECT
        id,
        ipadres,
       datum,
       COUNT(*) AS views
    FROM
        bezoekers
    WHERE
        datum = '"
.$datum."'
    GROUP BY
        ipadres
    ORDER BY
        views
"
;
?>
 
Frank -

Frank -

30/10/2007 12:01:00
Quote Anchor link
Roy schreef op 30.10.2007 11:55:
@ Jan:

Maar ik heb deze query om het uit de database te halen:

$sql = "SELECT id, ipadres, datum FROM bezoekers WHERE datum = '$datum' GROUP BY ipadres ORDER BY id";

Wat moet ik dan doen bij ORDER BY?
Wat doet die GROUP BY daar? Deze query is niet geldig en zal onzin opleveren. De database hoort deze ook af te keuren.

Zelfs MySQL keurt hem ook af, maar alleen wanneer jij STRICT-mode gebruikt. Ook MySQL weet dat deze query onzin zal opleveren.

Edit: Ook de query van Blanche is niet goed en dat verbaast mij enigzins...

Zie deze tutorial over het hoe en waarom.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
Henk

Henk

30/10/2007 12:07:00
Quote Anchor link
Even tussendoor :P
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    $sSql
= "
        SELECT    ip ,
        (
            SELECT    COUNT(datum) AS total
            FROM    bezoekers
            WHERE    datum = '"
. $datum . "'
            AND        ipadres = '"
. $lijst->ipadres . "'
        ) as views
        FROM    bezoekers
        WHERE    datum = '"
. $datum . "'
        ORDER BY views
    "
;
?>
Dat kan je proberen?
 
Roy

Roy

30/10/2007 12:16:00
Quote Anchor link
Maar in dit voorbeeld Henk, dan doe je ORDER BY views... maar ik heb geen tabel in mn database met het aantal views, dat word berekend met die andere query die in mn beginpost staat.

Snap je wat ik bedoel?
 
Nicoow Unknown

Nicoow Unknown

30/10/2007 12:27:00
Quote Anchor link
Daarom kent hij views ook toe aan de select die hij daarnet heeft gemaakt op regel 9.
 
Joren de Wit

Joren de Wit

30/10/2007 13:16:00
Quote Anchor link
@Henk: waarom een subquery gebruiken terwijl hier juist een GROUP BY voor gemaakt is. Bovendien gaat je subquery niet werken aangezien je elke keer het aantal van hetzelfde ip adres bepaalt...

@Roy: je kunt ook sorteren op berekende resultaten zodra je het resultaat maar een alias meegeeft (met AS). En wat is er mis met de query die ik gaf, volgens mij is dat wat je zoekt. Heb je die al eens geprobeerd?
 
Roy

Roy

30/10/2007 13:30:00
Quote Anchor link
Sorry Blanche, die van jou was ik vergeten en werkt inderdaad super.

Ook bedankt voor je uitleg!
 
Henk

Henk

31/10/2007 17:44:00
Quote Anchor link
Blanche: klopt. Maar iets over de jouwe: je dout COUNT(*), is dat niet langzamer dan COUNT(een_kolom)?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.