webForumDet fria alternativet

Skriva ut undermenyer

5 svar · 281 visningar · startad av Steady

SteadyMedlem sedan dec. 2004225 inlägg
#1

Hejsan!

Undrar om någon kan hjälpa mig med denna svårknäckta nöt.
Jag har en tabell som heter menu som ser ut som följande:

ID - [i]int / auto_increment[/i]
Menu - [i]varchar[/i]
SubMenu - [i]int[/i]

Jag försöker bygga upp ett menysystem där Menu innehåller namnet på länken och där SubMenu är 0 om det inte är någon undermeny, annars är det ett ID som hänvisar till en Menu som har SubMenu 0. Det jag vill göra är alltså att lista alla Menu som har SubMenu 0 och sedan lista alla SubMenu:er därunder.
Exempel:

[b]ID - Menu - SubMenu[/b]
1 Datordelar 0
2 Grafikkort 1
3 Moderkort 1
4 Ljudkort 1
5 Kameror 0
6 Digitalkameror 5
7 Analoga kameror 5

Måste jag göra detta genom att lägga en loop i en loop eller finns det något enklare sätt?
Hoppas ni förstår principen och kan hjälpa mig med detta.
Tack på förhand!

SteadyMedlem sedan dec. 2004225 inlägg
#2

Okej, jag fick lösa det med loop i loop. Nu till en annan fråga.
Jag skulle vilja räkna hur många artiklar det finns i varje meny. Alltså en Count i SELECT:en som räknar på antalet artiklar som har MenuID = menu.ID.
Artikeltabellen heter article och har MenuID som relationskolumn.

Tack på förhand

Peter SMedlem sedan dec. 20025 483 inlägg
#3
select	 a.menuid, count(*) as total 
from	 article a, menu m 
where	 a.menuid = m.id 
group by a.menuid

:)

SteadyMedlem sedan dec. 2004225 inlägg
#4

Fint, den listar dock inte alla poster, vet inte riktigt varför. Något jag missat?

SELECT	a.MenuID, m.ID, m.Menu, Count(a.MenuID) AS total 
FROM 	article a, menu m 
WHERE 	m.SubMenu = 0 AND a.MenuID = m.ID 
GROUP BY a.MenuID
Peter SMedlem sedan dec. 20025 483 inlägg
#5

Testa denna:

select		m.id, m.menu, count(*) as total 
from		menu m 
left outer join	article a 
on		m.id = a.menuid 
where		m.submenu = 0 
group by	m.id, m.menu

:)

SteadyMedlem sedan dec. 2004225 inlägg
#6

Funkade kanonfint! Tack så mycket. :)

127 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)