login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Zo weinig mogelijk querys

Offline MothZone - 02/07/2005 12:47
Avatar van MothZonePHP ver gevorderde Hallo.
Ik ben aan een tutorials-systeem bezig, en ik wil dat als hij de categorieën uit de database haalt, hij er ook bijzet hoeveel tutorials er bij die categorie horen.
Maar de tutorials zelf staan in een andere tabel.
Hoe kan ik dit het beste instellen zodat er zo weinig mogelijk query's zijn?
Eerst dacht ik aan alle categorieën laden, en bij elke categorie een query doen om de tut's te tellen in de andere tabel, maar bij 5 categorieën zijn er dan al 6 querys op 1 pagina wat toch wat veel is (of niet?).
Dus hoe kan dit het beste/snelste?

Greetz Mothzone

9 antwoorden

Gesponsorde links
Offline Tuinstoel - 02/07/2005 12:49
Avatar van Tuinstoel PHP expert Ik denk niet dat er een snellere manier is als je met 2 verschillende tabellen werkt.
Als je in de tabel "categorie" dan ook bij houdt hoeveel tutorials er in staan dan is het simpel, 1 query.
Offline MothZone - 02/07/2005 12:54
Avatar van MothZone PHP ver gevorderde ok, zal het zo eens proberen
Offline uhuh - 02/07/2005 13:06
Avatar van uhuh HTML interesse Simpel voorbeeld:

categories:
+----------+
| category |
+----------+

articles:
+----------+---------------+
| id | category |
+----------+---------------+

SELECT categories.category AS category, count(articles.id) AS amount FROM categories, articles WHERE categories.category = articles.category GROUP BY category
Offline MothZone - 02/07/2005 13:14 (laatste wijziging 02/07/2005 13:20)
Avatar van MothZone PHP ver gevorderde ow, thx, dus, zou dit juist zijn?

tutorials_cat:
- id
- naam
- beschrijving

tutorials_tut:
- id
- cat
- naam
- tut

SELECT tutorials_cat.naam AS naam,
tutorials_cat.beschrijving AS beschrijving,
count(tutorials_tut.id) AS aantal
FROM tutorials_cat, tutorials_tut WHERE tutorials_cat.id = tutorials_tut.cat GROUP BY cat

edit krijg niets te zien:s
Offline Tuinstoel - 02/07/2005 13:35
Avatar van Tuinstoel PHP expert probeer eens met mysql_error() er achter te komen of je mogelijk wat fout doet?
Offline uhuh - 02/07/2005 13:43
Avatar van uhuh HTML interesse bij werkt jou query zelfs:

php *over php: 2
mysql *over mysql: 1

  1. <?
  2. mysql_connect('', '', '');
  3.  
  4. $result = mysql_query('SELECT tutorials_cat.naam AS naam,
  5. tutorials_cat.beschrijving AS beschrijving,
  6. count(tutorials_tut.id) AS aantal
  7. FROM tutorials_cat, tutorials_tut WHERE tutorials_cat.id = tutorials_tut.cat GROUP BY cat');
  8. while($row = mysql_fetch_array($result))
  9. {
  10. echo $row['naam'].' *'.$row['beschrijving'].': '.$row['aantal'].'<br />';
  11. }
  12. ?>


Er moet wel wat in je tabellen staan he 
Probeer anders GROUP BY cat te veranderen in GROUP BY tutorials_cat.id
Offline MothZone - 02/07/2005 16:43
Avatar van MothZone PHP ver gevorderde ja, stond niets bij de tutorials zelf, maar kan dit niet opgelost worden zodat aantal = 0 als het leeg is?
Offline uhuh - 02/07/2005 18:19
Avatar van uhuh HTML interesse SELECT tutorials_cat.naam AS naam, tutorials_cat.beschrijving AS beschrijving, count(tutorials_tut.id) AS aantal FROM tutorials_cat LEFT JOIN tutorials_tut ON tutorials_cat.id = tutorials_tut.cat GROUP BY tutorials_cat.id
Offline MothZone - 02/07/2005 18:27
Avatar van MothZone PHP ver gevorderde ok, thx
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.26s