webForumDet fria alternativet

krånglig kategorisering

ASP

24 svar · 280 visningar · startad av OveRRidE

Medlem sedan feb. 200112 078 inlägg
Frågan#1

Ok nu skall ni få nåt att bita i. Jag har iaf inte lyckats lösa det, men jag förvånar mig inte ifall ni gör det. :)

Jag har en stor databas med följande struktur:

Tabeller
-------------
-kat
-kat_join
-priser

1. Kat
-----------

Kat - primärnyckel och katid
Katnamn - string

2. Kat_join
----------------

ID - primärnyckel
Artnr - string
Katid - numerisk

3. Priser
---------------

Den enda relevanta kolumnen är:
Artnr - string

Ok.. nu till problemet. :)

Jag har i tabellen priser, ett unikt artikelnummer på varje produkt. Denna tabell kan jag inte spara någon data i eftersom den uppdateras (importeras från txt-fil) dagligen med ny data, vilket omöjliggör att jag skapar en kolumn med kategori-id i. Annars hade det hela varit ganska lätt. :)

(Kategorierna som är i tabellen idag skall inte användas, jag skall göra egna, mer förenklade.)

Nu är det så att jag måste använda artikelnumret för att identifiera vilken kategori den ligger i.

Därför har jag gjort en tabell till, kat där jag namnger kategorierna och ger var och en ett unikt katid-nummer. (se tabell 1 ovan)

I nästa tabell (tabell 2), kat_join kommer ju då specen på vilka produkter som tillhör vilken kategori (eftersom vi inte kan göra detta direkt i "priser").

Detta skapar ett problem för min skalle då jag skall lista alla kategorier, och sedan lista produkterna under den, när man klickar på den.

Relaterade kolumner:
kat.kat relaterar till kat_join.katid
kat_join.artnr relaterar till priser.artnr

Är det nån som förstår vad jag menar?? :q

Pliz help.

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

[Redigerat av OveRRidE den 17 aug 2001]

[Redigerat av OveRRidE den 17 aug 2001]

Medlem sedan juni 200032 967 inlägg
#2

du vill alltså ha två sql-frågor,

  1. listar alla kategorier som innehåller någon produkt, och
  2. en som listar alla produkter i given kategori

har jag förstått dig rätt?

------------------
can i borrow your goat?

Medlem sedan feb. 200112 078 inlägg
#3

ja. men det är inte där problemet ligger.

mitt problem är hur sql-satsen skall se ut..

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#4

jag förstod det, men jag ville bara se så att jag förstod vad du var ute efter. :)

något sånt här kanske:

select distinct kat, katnamn from kat, katjoin, priser where kat = kat_join.katid and kat_join.artnr = priser.artnr order by katnamn
select priser.* from priser, kat_join where priser.artnr = kat_join.artnr and kat_join.katid = 3

mvh,

------------------
can i borrow your goat?

Medlem sedan feb. 200112 078 inlägg
#5

glöm detta inlägg :)

[Redigerat av OveRRidE den 17 aug 2001]

Medlem sedan feb. 200112 078 inlägg
#6

en fråga innan jag testar..

vad innebär distinct?

det betyder ju typ utpräglad.. men i vilket sammanhang hamnar det i SQL?

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan feb. 200112 078 inlägg
#7

Sen tror jag denna satsen kommer att generera ett fel..

select distinct kat, katnamn from kat, katjoin, priser where [b]kat[/b] = kat_join.katid and kat_join.artnr = priser.artnr order by katnamn

eller?

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan feb. 200112 078 inlägg
#8
Microsoft JET Database Engine error '80004005' 

The specified field 'kat' could refer to more than one table listed in the FROM clause of your SQL statement. 

/kategori.asp, line 11

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#9

byt ut kat mot kat.kat.

sorry.

distinct betyder att endast ett entry av varje förekomst returneras, dvs, alla dubletter kastas bort på vägen.

(frågan kommer alltså returnera alla unika kombinationer av kat och katnamn).

red: jag visste ju inte att du hade ett fält som hette kat i någon av de andra tabellerna, ju.

------------------
can i borrow your goat?

[Redigerat av @nders den 17 aug 2001]

Medlem sedan aug. 20012 349 inlägg
#10

blir förvirrad av namnen i tabellerna.
en bra sak för att göra det hela mer läsbart är att döpa tabeller till
tblTabellnamn samt attribut till TabellnamnAttributnamn. Då slipper man alla risker för krockar, det är tydligt när man reder i det vilken tabell och vilket attribut man pratar om.

ex:
tblSkola
skolaid
skolanamn

tblElev
elevfirstname
elevlastname
elevskolaid

Allt blir tydligt, man ser nycklar och kopplingar lätt.

Detta var inte mycket hjälp, men ett litet korståg för bättre och mer läsbar kod. ja ja... jag undviker att debugga min kod just nu och ägnar tid åt annat.

suck... tebax till COM objektet. :(

------------------

Gee, that was really exciting. I bet you're a big Lee Marvin fan, aren't you?

Medlem sedan feb. 200112 078 inlägg
#11

Jag får

Microsoft JET Database Engine error '80004005' 

The specified field 'kat' could refer to more than one table listed in the FROM clause of your SQL statement. 

/kategori.asp, line 11

mrblonde: javet, jag har gjort det innan och jag funderar på att göra det igen.

återkommer efter test.

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#12

byt ut kat mot kat.kat.

alltså:

select distinct kat.kat, katnamn from kat, katjoin, priser where kat = kat_join.katid and kat_join.artnr = priser.artnr order by katnamn

------------------
can i borrow your goat?

Medlem sedan feb. 200112 078 inlägg
#13
Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters. 

/kategori.asp, line 11

:(

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan feb. 200112 078 inlägg
#14

...someone.. ? :)

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#15

har du skrivit sql-frågan precis som ovan?

hur ser rad 11 ut?

------------------
can i borrow your goat?

Medlem sedan feb. 200112 078 inlägg
#16

rad 11 är SQL-satsen.

jag jag har skrivit den som den är. jag har dock ändrat lite, det var nämligen ett fel:

select distinct kat.kat, katnamn from kat, [b]katjoin[/b], [red]priser where kat = kat_join.katid and kat_join.artnr = priser[/red].artnr order by katnamn

priser heter egentligen inte priser, men det har jag bara stavat om. Sen skall det vara kat**_**join.. :)

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan feb. 200112 078 inlägg
#17

Skall det inte vara nåt mer här med? :q

select distinct kat.kat, katnamn from kat, kat_join, priser where [b]kat[/b] = kat_join.katid and kat_join.artnr = priser.artnr order by katnamn

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#18

jo, kat.kat där också. :)

(håller dock med mrblonde om att du bör fixa lite bättre namn... :) )

------------------
can i borrow your goat?

Medlem sedan feb. 200112 078 inlägg
#19

Ok.. *lets play all our cards* ;)

nu ser frågan ut såhär:

select distinct kat.kat, katnamn from kat, kat_join, priswebsverige where kat.kat = kat_join.katid and kat_join.artnr = priswebsverige.artnr order by katnamn

och jag får

Microsoft JET Database Engine error '80040e10' 

No value given for one or more required parameters. 

/kategori.asp, line 11

rad 11 är sql-frågan ovan. vad betyder felmeddelandet egentligen? jag fattar inte innebörden av det..

msdn nästa.. ;)

------------------
I have comed to take what is rightfully mine. Existence in eternity. And all i need is your creditcard number. | Existence

Medlem sedan juni 200032 967 inlägg
#20

hur ser hela databastjofräset ut?

från koppling, till öppning av recordset, exekvering av sql-fråga...

------------------
can i borrow your goat?

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