webForumDet fria alternativet

Sökmotor bland länksamling

ASP

27 svar · 417 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

Har tänkt att lägga upp en struktur för en länksamling som är tänkt att expandera kraftigt. Därför har jag beslutat att dela in länkarna i kategorier samt i underkategorier.

Och då till frågan: Ska jag göra själva kategoriseringen i databasen, eller i en fil för sig? För-/nackdelar?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#2

Lägg det i databasen.

Måste jag motivera det?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#3

Nej, det behöver du inte. ;)

Men hur ska jag göra med underkategorier? Det är inga problem i ett steg, exempelvis "Hej > Hopp", men ska man gå ner ytterligare ett steg blir det problem "Hej > Hopp > Hej då". Hur ska man genomföra det?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#4

Om du sätter ett maxdjup på antal underkategorier så går det att skriva en fråga (utan rekursion) som plockar fram allt i godtycklig (sub)kategori.

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 12 dec 2001]

Medlem sedan juni 20019 024 inlägg
#5

Du menar alltså att man får skapa en tabell per underkategori och sedan göra en sammanslagning av dessa plus sökresultatet när man hämtar datan?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#6

Nej, det behövs inte

category
--------
id
name
description

subcategory
-----------
subcategoryid
categoryid -- kan vara null

link
----
id
url
description
categoryid

Sen skan man använda unions och lite selfjoin för att få fram det man vill.

Alternativt kan man först traversera kategoriträdet och få fram en lista på möjliga id eller så kan du läsa upp hela den strukturen en gång och lagra i application. Det blir förmodligen inte så mycket data.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#7

Okej, men om jag ska lagra en länk i "category" tabellen, vilket ID ska jag då ange i "link" tabellen? För samma ID kan ju både förekomma i "category" och "subcategorys"?!

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#8

Borde väl bli subcategoryid. Jag kom att tänka på en sak....

Du kanske vill ha möjlighet att sätta flera kategorier för dina länkar?

------------------
essentitia preter non sans multiplicandum

[Redigerat av LarsG den 13 dec 2001]

Medlem sedan juni 20019 024 inlägg
#9

Om så vore möjligt, ja!
Man vet ju aldrig hur det kan bli i framtiden. ;)

Borde väl bli subcategoryid.

Om jag vill lägga något i en "rootkategori" då? Exempelvis "Film" istället för "Film > Filmskolor"?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#10

Det kanske är bättre om du döper kolumnerna så här

subcategory
-----------
categoryid
parentcategoryid

Om något är en rootkategori så har den en parentcategoryid som är null.

Om du vill kunna ha en länk i flera kategorier så får du bryta ut det i en egen tabell

linkcategory
------------
linkid
categoryid

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#11

subcategory ...
Om något är en rootkategori så har den en parentcategoryid som är null.

Aha, den modellen kör jag på! Tack!

Om du vill kunna ha en länk i flera kategorier så får du bryta ut det i en egen tabell

Oj, då missuppfattade jag din fråga tidigare. Den ska bara finnas i en (1) kategori.

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan juni 20019 024 inlägg
#12

Hello,

Nu har jag kommit så långt att jag behöver hjälp med SQL satsen. Hur ska jag göra för att läsa ut kategorierna med tillhörande underkategorier?

Exempel:

[b]Category_ID | Cat_Name | ParentCategory_ID[/b]
1 - Uthyrningsföretag - null
2 - LiteGrip - 1
3 - Arri - 1
4 - Aaton - 1

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan juni 20019 024 inlägg
#13

Vad ska jag använda för funktioner? Någon typ av JOIN?

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#14

Hur skall det fungera?

Tänkte du lägga ut alla kategorier i en dropdown och sedan skicka en lista av valda kategorier(id) till söksidan?

Sen så vill du ha en funktion som givet ett kategoriid returnerar id för alla överliggande kategorier eller?

Vill du kunna hantera ett godtyckligt djup i trädet?

Kommer du att lägga till nya kategorier väldigt ofta?

Det jag funderar på är om det är effektivast att lägga alla kategorier i en array (där index motsvarar id) och som innehåller parentkategori. Då är det lätt att loopa igenom den för varje id tills man kommer till en rootkategori. Den arrayen kan du spara i en application-variabel.

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#15

Hur skall det fungera?
Bra fråga. ;)

Tänkte du lägga ut alla kategorier i en dropdown och sedan skicka en lista av valda kategorier(id) till söksidan?
Nej.

Sen så vill du ha en funktion som givet ett kategoriid returnerar id för alla överliggande kategorier eller?
Japp.

Vill du kunna hantera ett godtyckligt djup i trädet?
Eventuellt 1-2 underkategorier. Kanske mer.

Kommer du att lägga till nya kategorier väldigt ofta?
Nej.

Det jag funderar på är om det är effektivast att lägga alla kategorier i en array (där index motsvarar id) och som innehåller parentkategori. Då är det lätt att loopa igenom den för varje id tills man kommer till en rootkategori. Den arrayen kan du spara i en application-variabel.
Jag tänkte också på det, men man ska ju även kunna ha länkar i en rootkategori.

Alltså

Film
- Imdb.com

Film > Företag
- Arri.com

Eller jag kanske ska köra på att sköta "sorteringen" med ASP?
r) Och använda sig av rekursion när man visar kategorierna?!

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

[Redigerat av Pace den 14 dec 2001]

Medlem sedan juni 20019 024 inlägg
#16

glöm detta ;)

[Redigerat av Pace den 14 dec 2001]

Medlem sedan juni 20019 024 inlägg
#17

Okej, nu har jag bestämt mig för att enbart ha 1 underkategori. Det blir enklast.

Så jag har följande tabeller:

[b]Lankar_Cat[/b]
----------
Cat_ID
Cat_Name

[b]Lankar_Subcat[/b]
-------------
Subcat_ID
Subcat_Name
RootCat_ID

[b]Lankar[/b]
------
ID
Titel
Url
Beskrivning
Kategori
Subkategori
Klick

När jag lägger till en länk så kan den antingen ligga i en rootkategori, eller en underkategori. När den ligger i rooten tänkte jag att exempelvis: Kategori = 3 och Subkategori = null,
och när den ska ligga i en underkategori så blir det
Kategori = null och Subkategori = 3

Men hur ska SQL satsen se ut? Så här långt har jag kommit:

SELECT kategori, id, titel, url, beskrivning, klick
FROM Lankar
LEFT JOIN Lankar_Cat ON Lankar.Kategori = Lankar_Cat.Cat_ID

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

Medlem sedan dec. 200012 464 inlägg
#18

Varför har du med både kategori och subkategori i lankar?

Varför har du med subcat_namn i Lankar_subcat?

Varför blandar du svenska och englska namn?

Lankar_Cat
----------
Cat_ID
Cat_Name

Lankar_Subcat
-------------
Subcat_ID
RootCat_ID

Lankar
------
ID
Titel
Url
Beskrivning
Kategori
Klick

select Cat_Name,id, titel, url, beskrivning, klick
FROM Lankar inner JOIN Lankar_Cat ON Lankar.Kategori = Lankar_Cat.Cat_ID
where  Lankar.Kategori = [i]din kategori[/i]
union
select Cat_Name,id, titel, url, beskrivning, klick
FROM (Lankar inner JOIN Lankar_Subcat ON Lankar.Kategori = Lankar_subCat.subCat_ID
inner join Lankar_Cat ON Lankar_subCat.RootCatID = Lankar_Cat.Cat_ID
where  Lankar.Kategori = [i]din kategori[/i]

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#19

Varför har du med både kategori och subkategori i lankar?
För att det var det enda sättet jag fick det att fungera. Men det är bl.a. det jag behöver ha hjälp med!

Varför har du med subcat_namn i Lankar_subcat?
Det är ju underkategoriernas namn. Eller hur menar du?

Varför blandar du svenska och englska namn?
:r Dålig vana. Tabellen "lankar" gjorde jag för några månader sedan, och de andra nyligen.

Jag fick i alla fall detta felet på den SQL du gav mig ovan (MySQL):

You have an error in your SQL syntax near 'INNER JOIN Lankar_Cat ON Lankar.Kategori = Lankar_Cat.Cat_IDWHERE Lankar.Kategor' at line 1

------------------
"Tål det inte att skämtas om, är det inte värt att ta på allvar."

[Redigerat av Pace den 15 dec 2001]

Medlem sedan dec. 200012 464 inlägg
#20

Jag tänkte att du skulle ha med alla kategorier, även subkategorier, i lankar_cat. (Det skulle underlätta om du senare vill lägga till subsubkategorier.)

Av felet att döma så saknar du en blank framför where någonstans i din sql-sats.

Du vet väl att du behöver mysql 4.0 för att union skall fungera.

------------------
essentitia preter non sans multiplicandum

273 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
134 ms — ändringar (db)