webForumDet fria alternativet
Logga in / Bli medlem

INNER JOIN, LEFT JOIN, kategorier och underkategorier

Databaser & SQL

0 svar · 227 visningar · startad av jme

Medlem sedan maj 20012 237 inlägg
Trådstart#1

Hej:

Jag vill ha följande kategorisystem:

kategori a (x artiklar):
-underkategori a1 (x artiklar)
-underkategori a2 (x artiklar)
-underkategori a3 (x artiklar)

kategori b (x artiklar)
- underkategori b1 (x artiklar)
- underkategori b2 (x artiklar)

osv
- osv

(x artiklar) = hur många artiklar har postats under denna kategori/underkategori

Jag har följande tavlor (förenklade):

create table kategori
(
	id INT
	name
	PRIMARY KEY(id);
);

create table underkategori
(
	id INT
	kategori_id INT /* refererar till kategori (id) */
);

create table artikel
(
	id INT

	kategori_id INT /* refererar till kategori (id) */
	underkategori_id INT /* refererar till underkategori (id) */
);

Jag har lite problem med att definiera sql-frågan.

Just nu har jag:

SELECT k.*, a.*, count(art.id) FROM article as art, category AS k INNER JOIN subcategory AS a ON a.category_id = k.id group by (a.id)

OBS: ovanstående sql-fråga tar med onödigt mycket data just nu (k.*, a.*) men när jag får frågan att fungera så finslipar ja den)

men den returnerar samma värde för count().

Jag ska ha nåt i stil med

WHERE art.category_id = k.id AND art.subcategory_id = a.id

men den tar inte med de kategorier/underkategorier som ännu inte används i en artikel.

Jag ska egentligen ha nån sort LEFT JOIN men jag vet inte riktigt hur jag ska placera den i ovanstående sql-fråga.

253 ms totalt · 4 externa anrop · v20260731065814-full.442f7a9e
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)