(SQL) count bij join van meerdere tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marco V

Marco V

07/01/2011 11:17:54
Quote Anchor link
Hallo,

Ik krijg het volgende maar niet aan de praat, weet iemand hoe ik dit zou moeten doen;

Bij het tonen van zoekresultaten wil ik het totaal aantal gevonden regels tellen (ten behoeve van navigatie), maar het volgende script geeft een fout!?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
        // Count how many rows there are in the table
        $countrows = "SELECT count(ARTIKELEN.* , ARTIKELSOORTEN.NAAM as ART_SOORT , ARTIKELEN_LEVERANCIERS.LEVID, ARTIKELEN_LEVERANCIERS.LEVREFERENTIE) FROM ARTIKELEN INNER JOIN
(ARTIKELSOORTEN
        INNER JOIN
            ARTIKELEN_LEVERANCIERS
        ON
               ARTIKELSOORTEN.ID = ARTIKELEN_LEVERANCIERS.ARTIKELID)
        ON ARTIKELEN.SOORT=ARTIKELSOORTEN.ID "
.$where." ORDER BY SOORT, NAAM";
        $count = mysql_fetch_row(mysql_query($countrows));
?>


Het script werkt wel zonder een join (zie onderstaande script), dus de fout zit naar mijn idee in de "count() opdracht" van de query!?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
// Count how many rows there are in the table
        $countrows = "SELECT count(*) FROM ARTIKELEN ".$where." ORDER BY SOORT, NAAM";
        $count = mysql_fetch_row(mysql_query($countrows));
?>
 
PHP hulp

PHP hulp

17/01/2021 01:05:55
 
Tikkes C

Tikkes C

07/01/2011 11:24:31
Quote Anchor link
wat doen die () in je sql?

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
<?php
        // Count how many rows there are in the table
        $countrows = "SELECT
count(ARTIKELEN.* , ARTIKELSOORTEN.NAAM as ART_SOORT , ARTIKELEN_LEVERANCIERS.LEVID, ARTIKELEN_LEVERANCIERS.LEVREFERENTIE) FROM ARTIKELEN INNER JOIN
ARTIKELSOORTEN
ON ARTIKELEN.SOORT=ARTIKELSOORTEN.ID
INNER JOIN
ARTIKELEN_LEVERANCIERS
ON ARTIKELSOORTEN.ID = ARTIKELEN_LEVERANCIERS.ARTIKELID
"
.$where."
ORDER BY SOORT, NAAM"
;

$count = mysql_fetch_row(mysql_query($countrows));

?>


en wat doe je juist met die count? over alles?
 
Marco V

Marco V

07/01/2011 13:26:16
Quote Anchor link
Met behulp van het resultaat van "count" bepaal ik de huidige positie in het totaal van de zoekresultaten.

Ik kreeg (en krijg nogsteeds!) een foutmelding (Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given) op de volgende regel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$count
= mysql_fetch_row(mysql_query($countrows));
?>


De waarde van $where (WHERE ARTIKELEN.BLOCK = 'N') is gelijk aan de variant zonder de join, daar kan het naar mijn idee niet aan liggen. De haakjes in de sql zorgen ervoor er toch voor een join wordt gedaan op het resultaat van de join (tussen de haakjes)?

Ik zoek nog even verder... doch tips zijn welkom! :-)

Toevoeging op 07/01/2011 13:55:50:

Ik heb de oplossing gevonden... de juiste query moest zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$countrows
= "SELECT count(*) FROM ARTIKELEN INNER JOIN (ARTIKELSOORTEN INNER JOIN ARTIKELEN_LEVERANCIERS ON ARTIKELSOORTEN.ID = ARTIKELEN_LEVERANCIERS.ARTIKELID) ON ARTIKELEN.SOORT=ARTIKELSOORTEN.ID ".$where." ORDER BY ARTIKELEN.SOORT, ARTIKELEN.NAAM";
?>


In elk geval dank voor je reactie!
Gewijzigd op 07/01/2011 13:46:01 door Marco V
 



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.