MySQL count rows in each category
Gerard Nijboer
30/09/2009 22:01:00Hey,
Ik wil via een MySQL query alle categoriën uit de tabel iip_links_cat laden, en dan in de tabel iip_links kijken hoeveel links er matchen met de id van de category. In de tabel van de categoriën wordt de categorie aangegeven met id, in de tabel van de links wordt dit aangegeven met cat.
Ik heb al wat zitten proberen met JOIN en COUNT, maar ik ben daar niet zo ervaren mee.
Kan iemand me hier uit de brand helpen?
Alvast bedankt!
Ik wil via een MySQL query alle categoriën uit de tabel iip_links_cat laden, en dan in de tabel iip_links kijken hoeveel links er matchen met de id van de category. In de tabel van de categoriën wordt de categorie aangegeven met id, in de tabel van de links wordt dit aangegeven met cat.
Ik heb al wat zitten proberen met JOIN en COUNT, maar ik ben daar niet zo ervaren mee.
Kan iemand me hier uit de brand helpen?
Alvast bedankt!
PHP hulp
26/04/2024 22:18:44Jesper Diovo
30/09/2009 22:06:00Code (php)
1
2
2
SELECT *, (SELECT COUNT(*) FROM iip_links AS il WHERE il.cat = ilc.id) AS aantal
FROM iip_links_cat AS ilc
FROM iip_links_cat AS ilc
SQL Subquery.
Gerard Nijboer
01/10/2009 13:34:00Is het hier niet het geval dat je alsnog twee queries draait? Ik dacht meer te moeten zoeken in de richting van JOIN?
Gerard M
01/10/2009 13:53:00Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
SELECT
iip_links_cat.*, COUNT(*)
FROM
iip_links_cat
LEFT JOIN iip_links
ON iip_links_cat.id= iip_links.cat
GROUP BY
iip_links_cat.id
ORDER by
iip_links_cat.id DESC
LIMIT 25
iip_links_cat.*, COUNT(*)
FROM
iip_links_cat
LEFT JOIN iip_links
ON iip_links_cat.id= iip_links.cat
GROUP BY
iip_links_cat.id
ORDER by
iip_links_cat.id DESC
LIMIT 25
Als je het met een join wil oplossen kan je het zo oplossen. Ik weet niet wat beter en sneller is in dit geval; Ik ondervind altijd dat een sub query sneller dan een JOIN (MySQL, myisam). Maar goed, als je 'echt' voor performance gaat maak je een column met de naam 'count' in the iip_links_cat table, deze moet je wel elke keer aanpassen als een iets toevoegt/verwijderd.
Jesper Diovo
01/10/2009 17:02:00@Gerjo: Dat kolom aanmaken hoeft niet. Je ziet dat er makkelijker twee queries voor te vinden zijn die het zo oplossen, zonder dat je telkens kolommen aan moet passen.
Ik weet bijna zeker dat een subquery sneller is dan een join. Zeker omdat deze subquery eigenlijk een hartstikke simpele query is. Hij zit dan ook nog eens in een nog simpelere query. Kan me geen snellere query voorstellen eigenlijk :).
Ik weet bijna zeker dat een subquery sneller is dan een join. Zeker omdat deze subquery eigenlijk een hartstikke simpele query is. Hij zit dan ook nog eens in een nog simpelere query. Kan me geen snellere query voorstellen eigenlijk :).