webForumDet fria alternativet

Lite speciell select...

8 svar · 233 visningar · startad av Bire

BireMedlem sedan dec. 199919 074 inlägg
#1

Jag har ett litet delikat selectproblem för er att ta tag i nu ;)

Min databas ser ut så här:

En tabell med produktkategorier: Kat

En tabell med underkategorier: Delkod

En tabell med produkter: Prod

på sidan så får man först välja vilken kategori (Kat) man är intresserad av... Sedan skall man kunna välja mellan de underkategorier som finns för den huvudkategori man valt... nu kommer problemet ;)

Jag har i tabellen: Prod ett fält som heter: DelkodId och med hjälp av följande selectsats så har jag försökt att bara lista de underkategorier som finns till varje produkt som ingår i den utvalda huvudkategorin.. Men då visas samtliga underkategorier för varje produkt och så vill jag ju inte ha det ;)

Så här ser selectsatsen ut iaf:

SQLStmt = "SELECT Kat.Kategori, Kat.Katbild, Delkod.Delkod, Delkod.DelkodId, Prod.DelkodId, Kat.KatId FROM Kat, Prod, Delkod WHERE Kat.katId = Prod.KatId AND  Prod.DelkodId = Delkod.DelkodId AND (Kat.KatId = " & Request("KatId") & ") Order by Delkod"

Med andra ord:
Först väljer man huvudkategori, sen kommer man till denna select som skall visa de underkategorier som finns att välja mellan...

Hjääälp :)

BrimbaMedlem sedan dec. 19995 875 inlägg
#2

Hallå Birp!

Här kommer ett exempel på hur du skall göra.

tabHKat (Tabell)
hKatID - räknare
hKatNamn - HuvudKategoriNamn

tabUKat (Tabell)
uKatID - räknare
uKatNamn - UnderKategoriNamn
hKatID - Kopplad till tabHKat.hKatID

tabProd (Tabell)
Pid - räknare
Prod - ProduktNamn
hKatID - Kopplad till tabHKat.hKatID
uKatID - Kopplad till tabUKat.uKatID

Därefter om du vill lista alla huvudkategorier:

SQLStmt = "SELECT tabHKat.hKatID, tabHKat.hKatNamn
FROM tabHKat"

Om du vill lista alla UnderKategorier under HuvudKategor nummer 1, kan du göra såhär:

SQLStmt = "SELECT tabUKat.uKatID, tabUKat.uKatNamn
FROM tabHKat INNER JOIN tabUKat ON tabHKat.hKatID = tabUKat.hKatID
WHERE (tabUKat.hKatID = 1)"

Om du vill lista alla produkter i HuvudKategori 3 och UnderKategori 2 gör du såhär:

SQLStmt = "SELECT tabProd.Pid, tabProd.Prod
FROM tabProd
WHERE (tabProd.uKatID = 2) AND (tabProd.hKatID = 3)"

Lycka till :)

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

fredrikMedlem sedan dec. 19991 072 inlägg
#3

hmm...om jag nu förstått det hela rätt så vill du ha det i 2 steg:

1. Välj kategori - nu listas underkategorier

2. Välj underkategori - nu listas produkter

Vad har delkod för relation med kat?
Varför har prod en relation med kat?

Om du nu ska ha det i 2 steg (som ovan) så räcker det ju med att delkod är i relation med kat och att prod är i relation med delkod.

Typ:
Kat
kat_id | kat_namn

Delkod
delkod_id | delkod_namn | kat_id

Prod
prod_id | prod_namn | delkod_id

Detta gör ju att du endast behöver "vanliga" sql-strängar för att först hämta alla "delkodar" och efter klick på delkod hämta alla produkter.

...eller är jag helt ute och snurrar nu?

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

BrimbaMedlem sedan dec. 19995 875 inlägg
#4

Samma tid men jag var före :p

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

fredrikMedlem sedan dec. 19991 072 inlägg
#5

japp, attans... :)

om du vill få ut produkter ur en viss kategori enligt min variant kan du skriva:

sql = "SELECT prod.prod_namn FROM kat INNER JOIN
    delkod ON kat.kat_id = delkod.kat_id INNER JOIN
    prod ON delkod.delkod_id. = prod.delkod_id
WHERE kat.kat_id = 1"

------------------
Fredrik Klarqvist
fredrik.klarqvist@swipnet.se
http://server.webwerkstaden.se/fredde/

BireMedlem sedan dec. 199919 074 inlägg
#6

Tack för alla tips grabbar, men tyvärr så hann min gode vän och tillika forumledarkollega: "Emission - The VBmaster" före :e

Jag har mao en strålande lösning på problemet och jag kan säga att det var väldigt snarlika som era förslag! :)

Tanx anyway!

BrimbaMedlem sedan dec. 19995 875 inlägg
#7

ehh.

Jag får göra en ändring här.

"Emission - The VBmaster"

"Emission - The master" tycker jag passar bättre :)

------------------
Mvh
Patrik aka Brimba
Brimbas lille ställe

BireMedlem sedan dec. 199919 074 inlägg
#8

Eller kort o gott: Mästaren! :)

aMedlem sedan maj 2000755 inlägg
#9

Mäster passar bra, han hjälper alltid till och kan i stort sett allt som är värt att veta.

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