[SQL] COUNT ROWS

Pagina: 1
Acties:

  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Heren / Dames,

Wie weet hoe ik een count moet uitvoeren.
Ik heb een art_id in me mysql database staan.

Ik wil het zelfde hebben bij me nieuws berichten zoals bij tweakers dat hij telt hoeveel reacties er achter staan.

Ik zet alle reacties in 1 tabel. Met een nummer dus als er 5 reacties komen op berichtje 117 komer er 5 records bij die met 117 beginnen en die 5 records wil ik optellen en achter het onderwerp zetten.

ik had al een stukje code maar dat werkt niet.
code:
1
2
3
4
5
6
7
mysql_connect("host","user","pass");
mysql_select_db("database");
$sql = mysql_query("SELECT art_id, COUNT(*) FROM tabel GROUP BY art_id");
while ($list = mysql_fetch_object($sql))
{
echo "$sql<br><br>";
}

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Je zet de topics en de reacties daarop in dezelfde tabel? Zou ik niet doen.

Op het eerste zicht lijkt er niets fout met uw code, maar post eens de lay-out van de tabel(len), dat zou al wat makkelijker moetn zijn om de fout te zien.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
code:
1
2
3
4
while ($list = mysql_fetch_object($sql))
{
echo "$sql<br><br>";
}

Zou je $list ook niet echo'en :P

  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Op dinsdag 08 januari 2002 09:19 schreef whoami het volgende:
Je zet de topics en de reacties daarop in dezelfde tabel? Zou ik niet doen.

Op het eerste zicht lijkt er niets fout met uw code, maar post eens de lay-out van de tabel(len), dat zou al wat makkelijker moetn zijn om de fout te zien.
Nee ik zet de reacties in een aparte tabel. Zelfs in een hele andere database.

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Op dinsdag 08 januari 2002 09:22 schreef Glimi_ie het volgende:
code:
1
2
3
4
while ($list = mysql_fetch_object($sql))
{
echo "$sql<br><br>";
}

Zou je $list ook niet echo'en :P
Ja dat kan maar dan krijg ik geen count te zien maar gewoon welke art_id in die tabel staan.

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

mooi voorbeeldje zoals het eigenlijk hoort....

Tabellen:
artikelen(id,tekst,titel,...)
reacties(id,art_id,tekst,user,...)


SELECT artikelen.*, count(reacties.id)
FROM artikelen,reacties
WHERE artikelen.id = reacties.art_id

Localhost, sweet localhost


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Op dinsdag 08 januari 2002 09:26 schreef Rembrand20 het volgende:

[..]

Nee ik zet de reacties in een aparte tabel. Zelfs in een hele andere database.
Wel een beetje overdreven he, in een andere db zetten.

Wat krijg je precies als foutmelding? Of krijg je geen fout maar verkeerde output? en wat krijg je dan als output en wat moet je krijgen?

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Op dinsdag 08 januari 2002 09:27 schreef kvdveer het volgende:
mooi voorbeeldje zoals het eigenlijk hoort....

Tabellen:
artikelen(id,tekst,titel,...)
reacties(id,art_id,tekst,user,...)


SELECT artikelen.*, count(reacties.id)
FROM artikelen,reacties
WHERE artikelen.id = reacties.art_id
Je zult er nog een GROUP BY moeten bijzetten.

https://fgheysels.github.io/


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op dinsdag 08 januari 2002 09:26 schreef Rembrand20 het volgende:

Ja dat kan maar dan krijg ik geen count te zien maar gewoon welke art_id in die tabel staan.
Als je $sql echo't zal hij de het aantal rijen in de resultset laten zien, en dat is niet wat je wilt
Aangezien je een object binnen haalt moet je die ook wel aanspreken op de rows
PHP:
1
2
3
4
5
6
7
8
9
<?
//FF AS aantal erbij om het simpeler te maken
//aantal is een alias
$sql = mysql_query("SELECT art_id, COUNT(*) as aantal FROM tabel GROUP BY art_id");
while ($list = mysql_fetch_object($sql))
{
echo "$list->art_id<br>$list->aantal<br>";
}
?>

[edit]code->php

  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Op dinsdag 08 januari 2002 09:27 schreef kvdveer het volgende:
mooi voorbeeldje zoals het eigenlijk hoort....

Tabellen:
artikelen(id,tekst,titel,...)
reacties(id,art_id,tekst,user,...)
Dit heb ik ook

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

ik zie niet helemaal waarom jou code niet zou werken... Je vertelt tenslotte ook niet wat er fout gaat. ('werkt niet' is te algemeen)

je count(* ) vervangen door count(id) zou wat uit moeten maken... misschien...
bovendien kun je je resultaat niet makkelijk opvragen met fetch_object als je het geen alias meegeeft...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?
mysql_connect("host","user","pass");
mysql_select_db("database");
$sql = mysql_query(
    "SELECT art_id, COUNT(id) as aantal 
     FROM tabel 
     GROUP BY art_id");
while ($list = mysql_fetch_object($sql))
{
  echo "<b>$list->art_id</b><br>$list->aantal <br>";
}
?>

edit:

leesbaarheid v. code

Localhost, sweet localhost


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Op dinsdag 08 januari 2002 09:32 schreef kvdveer het volgende:
[knip]
je count(* ) vervangen door count(id) zou wat uit moeten maken... misschien...
bovendien kun je je resultaat niet makkelijk opvragen met fetch_object als je het geen alias meegeeft...
Nou dat niet, aangezien er al gegroupt wordt. Dit wordt eerst uitgevoerd namelijk. (select altijd als laatste)

  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Heel simpel hij telt niet zoals hij zou moeten doen.
Hij laat alleen maar de waarde zien die in de tabel staat.
En ik wil juist dat hij de art_id optelt dus als er 5 art_id's staan die 117 zijn wil ik achter mijn nieuws subject (5) hebben staan. Maar dat stomme ding wil niet tellen. okay hij is het niet maar ik ben het

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Op dinsdag 08 januari 2002 09:38 schreef Rembrand20 het volgende:
Heel simpel hij telt niet zoals hij zou moeten doen.
Hij laat alleen maar de waarde zien die in de tabel staat.
En ik wil juist dat hij de art_id optelt dus als er 5 art_id's staan die 117 zijn wil ik achter mijn nieuws subject (5) hebben staan. Maar dat stomme ding wil niet tellen. okay hij is het niet maar ik ben het
Maar je zegt dat uw tabel met reacties in een andere db staat. Je moet dan natuurlijk ook een connectie leggen met die databank en in uw sql zul je het volgende moeten doen:
code:
1
2
3
4
SELECT databank1.topics.Id, COUNT(databank2.replies.id)
FROM databank1.topics, databank2.replies
WHERE databank1.topics.id = databank2.replies.id
GROUP BY databank1.topics.id

ofzo.

https://fgheysels.github.io/


  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
/* link Ophalen uit de database */
     89 $li = mysql_connect("host" , "user" , "pass" );
     90 $result = mysql_select_db("reactie_system", $li );
     91 $result = mysql_query("SELECT art_id, nfss.news.id, COUNT(*) FROM reactions, nfss.news WHERE
         nfss.news.id = art_id GROUP BY art_id", $li );
     92
     93 $total = mysql_num_rows($result);
     94
     95 while ($row=mysql_fetch_array($result))
     96 {
     97 $aantal="$row[art_id]";
     98 echo "$aantal";
     99 }
?>

Zou dit kunnen werken

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Kun je dat eens uit die php tags halen? Want dit vind ik echt niet leesbaar. Slechte kleuren en veels te klein op mijn scherm.

https://fgheysels.github.io/


  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
/* link Ophalen uit de database */
     89 $li = mysql_connect("localhost" , "root" , "" );
     90 $result = mysql_select_db("reactie_system", $li );
     91 $result = mysql_query("SELECT art_id, nfss.news.id, COUNT(*) FROM reactions, nfss.news WHERE
       nfss.news.id = art_id GROUP BY art_id", $li );
     92
     93 $total = mysql_num_rows($result);
     94
     95 while ($row=mysql_fetch_array($result))
     96 {
     97 $aantal="$row[art_id]";
     98 echo "$aantal";
     99 }

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Dat zou wel eens kunnen werken. Proberen zou ik zeggen, maar ik vraag me af of je geen connectie moet leggen naar die andere db : nfss.

https://fgheysels.github.io/


  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Op dinsdag 08 januari 2002 10:59 schreef whoami het volgende:
Dat zou wel eens kunnen werken. Proberen zou ik zeggen, maar ik vraag me af of je geen connectie moet leggen naar die andere db : nfss.
Dat zou kunnen maar ik vraag me af hoe ik dat oet doen dan

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Op dezelfde manier misschien als de connectie die gemaakt hebt met die andere db? :?

Waarom zet je die 2 tabellen eigenlijk niet in dezelfde databank?

https://fgheysels.github.io/


  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Dat heb ik doen met een rede gedaan maar wat dat was ik zou het niet meer weten. en kan ik gewoon een tweede verbinding leggen naar een andere db. dus in het zelfde stukje code.

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • whoami
  • Registratie: December 2000
  • Laatst online: 15:52
Try it and you'll see. NOrmaal wel.

https://fgheysels.github.io/


  • sorted.bits
  • Registratie: Januari 2000
  • Laatst online: 15:00
Euhm, je reacties in een andere DB zetten is NIET een goed idee, dit omdat (wanneer je DB design een beetje handig in elkaar zit) je JOINS kan gaan gebruiken, wat als voordeel heeft dat je meerdere tables met elkaar kan linken.

Dit heeft als voordeel dat het in grote tabellen meer dan 500% sneller is dan een requery.

Hint : Niet doen dus ;)

  • Rembrand20
  • Registratie: Juli 2001
  • Laatst online: 22-09-2023
Okay we gaan de site toch restyle dus dan zal ik de database wel opnieuw inmekaar zetten.

maar nu moet hetwel werken.
dus ik ga het even proberen

Model 3 LR AWD Solid Black / Black / Aero / Trekhaak - Bestelling 2-10 Leaseplan, 4-10 Tesla, RN 22-09, Nieuwe RN 25-11, VIN Yes, leverdatum: ?/?/19(?)


  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op dinsdag 08 januari 2002 10:40 schreef Rembrand20 het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
/* link Ophalen uit de database */
     89 $li = mysql_connect("localhost" , "root" , "" );
     90 $result = mysql_select_db("reactie_system", $li );
     91 $result = mysql_query("SELECT art_id, nfss.news.id, COUNT(*) FROM reactions, nfss.news WHERE
       nfss.news.id = art_id GROUP BY art_id", $li );
     92
     93 $total = mysql_num_rows($result);
     94
     95 while ($row=mysql_fetch_array($result))
     96 {
     97 $aantal="$row[art_id]";
     98 echo "$aantal";
     99 }
De kolommen uit de select waar je niet op groupeerd, moeten allemaal in de group by staan.
Je joint met reactions, maar dit is niet nodig, je kan de select ook op alleen je news tabel doen:
code:
1
2
3
4
SELECT id
    ,COUNT(*)
FROM   news
GROUP BY id
Pagina: 1