webForumDet fria alternativet

Optimera SQL

2 svar · 389 visningar · startad av Mokos

MokosMedlem sedan juni 200720 inlägg
#1

Hej!
Jag har en snurra som 1:hämtar alla poster ur en tabell, 2 skapar en snurra som klistrar in alla dessa i en snurra som plockar sina poster ur en ny tabell...
snurrigt!!
detta tar tid och kraft och jag är helt övertygad om att detta går att göra på ett bättre sätt, med ex: Innejoin eller liknande!! Mina kunskaper inom detta område är dock begränsade och jag vänder mig till er mer bevandrade för råd!

syftet med dessa snurror är att populera chained selectboxes som hämtar sin info ifrån db..

så kod!

sub kat1
	sSQL="select * from Prod_Kat1"
  	Set oRst_Kat1=oConn.Execute(sSQL)
	response.write("addOption(""1"", ""--Kat1--"", """", """", 1); //Empty starter option"&vbNewline)
	do while not oRst_Kat1.eof
	sKat1=Trim(oRst_Kat1("kat1_Namn"))
	sKatID1=Trim(oRst_Kat1("kat1_id"))
	response.write("addList(""1"", """&skat1&""",  """&sKatID1&""",  """&sKatID1&""");"&vbNewline)
	oRst_Kat1.movenext
	loop
	oRst_Kat1.close
end sub
sub kat2
	sSQL2="select DISTINCT * from Prod_Kat1"
		  	Set oRst_Kat1ID=oConn.Execute(sSQL2)
			do while not oRst_Kat1ID.eof
			sKat1_id=oRst_Kat1ID("kat1_id")
					response.write("addOption("""&sKat1_id&""", ""--Kat2--"", """", """", 1); //Empty starter option"&vbNewline)
							sSQL="select * from Prod_Kat2 WHERE Kat1_id=" & sKat1_id
  							Set oRst_Kat2=oConn.Execute(sSQL)
							  do while not oRst_Kat2.eof
								sKat2=Trim(oRst_Kat2("kat2_Namn"))
								sKat1_ID2=Trim(oRst_Kat2("kat1_id"))
								sKat2_ID=Trim(oRst_Kat2("kat2_id"))
										response.write("addList("""&sKat1_ID2&""", """&sKat2&""",  """&sKat2_ID&""",  """&sKat2_ID&""");"&vbNewline)
								oRst_Kat2.movenext
							  loop
							oRst_Kat2.close
			oRst_Kat1ID.movenext
			loop
			oRst_Kat1ID.close
end sub
sub kat3
	sSQL3="select DISTINCT * from Prod_Kat2"
		  	Set oRst_Kat2ID=oConn.Execute(sSQL3)
			do while not oRst_Kat2ID.eof
			sKat2_id=oRst_Kat2ID("kat2_id")
					response.write("addOption("""&sKat2_id&""", ""--Kat3--"", """", """", 1); //Empty starter option"&vbNewline)
							sSQL="select * from Prod_Kat3 WHERE Kat2_id=" & sKat2_id
  							Set oRst_Kat3=oConn.Execute(sSQL)
							  do while not oRst_Kat3.eof
								sKat3=Trim(oRst_Kat3("kat3_Namn"))
								sKat2_ID2=Trim(oRst_Kat3("kat2_id"))
								sKat3_ID=Trim(oRst_Kat3("kat3_id"))
										response.write("addList("""&sKat2_ID2&""", """&sKat3&""",  """&sKat3_ID&""",  """&sKat3_ID&""");"&vbNewline)
								oRst_Kat3.movenext
							  loop
							oRst_Kat3.close
			oRst_Kat2ID.movenext
			loop
			oRst_Kat2ID.close
end sub
%>
LarsGMedlem sedan dec. 200012 465 inlägg
#2

Beskriv vilka tabeller som används i frågorna och hur de är relaterade.
Ge exempel på datainnehåll och förväntat resultat.

Flyttas från ASP

MokosMedlem sedan juni 200720 inlägg
#3

Ohoj..!
Ok tabell1 heter artikel_kat1 och innehåller egentligen de grundläggande posterna: kläder, skor, utrustning..

tabell2 heter artikel_kat2 och innehåller undergrupper för ovanståeende tabell
typ under kläder som har id:8 så finns underkategorierna: byxor, tröjor, regnkläder, mössor m.m

tabell3 heter artikel_kat3 och är en undergrupp till kat2 så finns allt nedbrutet i småkategorier t-shirts och Piké under tröjor, shorts och byxor under byxor.. osv

jag tror ni förstår tanken...
varje tabell innehåller kolumnerna kat(nr)_id och kat(nr)_namn
id är integer och namnet är text.

Jag har använt mig av ett javascript som länkar ihop tabellerna i s.k. chainselects..
de funkar men det tar tid.. vilket jag inte tycker att det borde ta!!
anledningen till att det tar tid är att först körs en loop och i den loopen så körs en loop till för att plocka fram de posterna som matchar ett visst id i tabellen ovan..

jag vill ecentligen bara generera fram en javascriptkompatibel kod som ser ut såhär:

addOption("1", "--Kat1--", "", "", 1); //Empty starter option 
addList("1", "Kläder", "7", "7"); 
addList("1", "Utrustning", "8", "8"); 
addList("1", "Skor", "9", "9"); 

addOption("7", "--Kat2--", "", "", 1); //Empty starter option 
addList("7", "Tröjor", "11", "11"); 
addList("7", "Jackor", "12", "12"); 
addList("7", "Byxor", "13", "13"); 
addList("7", "Övrigt", "14", "14"); 
addList("7", "Träning", "19", "19"); 
addList("7", "Regn", "20", "20"); 
addList("7", "Bad", "32", "32"); 

addOption("8", "--Kat2--", "", "", 1); //Empty starter option 
addList("8", "Alpint / Snowboard", "15", "15"); 
addList("8", "Längd", "16", "16"); 
addList("8", "Fitness", "17", "17"); 
addList("8", "Fotboll", "21", "21"); 
addList("8", "Outdoor", "22", "22"); 
addList("8", "Running/Walking", "23", "23"); 
addList("8", "Golf", "24", "24"); 
addList("8", "Inlines/Skateboard", "25", "25"); 
addList("8", "Streethockey", "26", "26"); 
addList("8", "Hockey", "34", "34"); 

addOption("9", "--Kat2--", "", "", 1); //Empty starter option 
addList("9", "No_kat2", "18", "18"); 

addOption("11", "--Kat3--", "", "", 1); //Empty starter option 
addList("11", "Funktionströjor", "13", "13"); 
addList("11", "Stickat", "48", "48"); 
addList("11", "Piké", "49", "49"); 
addList("11", "Fritid", "52", "52"); 

addOption("12", "--Kat3--", "", "", 1); //Empty starter option 
addList("12", "Vinterjackor", "14", "14"); 
addList("12", "Vårjackor", "46", "46"); 

addOption("13", "--Kat3--", "", "", 1); //Empty starter option 
addList("13", "Vinterbyxor", "15", "15"); 
addList("13", "Underbyxor", "16", "16"); 
addList("13", "Shorts", "82", "82"); 
addList("13", "Byxor", "83", "83"); 

addOption("14", "--Kat3--", "", "", 1); //Empty starter option 
addList("14", "Strumpor", "17", "17"); 
addList("14", "Handskar / Vantar", "18", "18"); 
addList("14", "Mössor", "19", "19"); 

addOption("15", "--Kat3--", "", "", 1); //Empty starter option 
addList("15", "Skidor", "20", "20"); 
addList("15", "Pjäxor", "21", "21"); 
addList("15", "Stavar", "22", "22"); 
addList("15", "Brädor", "23", "23"); 
addList("15", "Skor - Snowboard", "24", "24"); 
addList("15", "Skydd", "25", "25"); 
addList("15", "Hjälmar", "26", "26"); 
addList("15", "Bindningar", "27", "27"); 

addOption("16", "--Kat3--", "", "", 1); //Empty starter option 
addList("16", "Skidor", "28", "28"); 
addList("16", "Skor", "29", "29"); 

addOption("17", "--Kat3--", "", "", 1); //Empty starter option 
addList("17", "Motionscyklar", "30", "30"); 
addList("17", "Ellipticals", "31", "31"); 
addList("17", "Roddmaskiner", "32", "32"); 
addList("17", "Löpband", "33", "33"); 
addList("17", "Multigym", "34", "34"); 
addList("17", "Bänkar", "35", "35"); 
addList("17", "Övrigt", "45", "45"); 

addOption("18", "--Kat3--", "", "", 1); //Empty starter option 
addList("18", "Jogging/Walking", "36", "36"); 
addList("18", "Fotboll", "37", "37"); 
addList("18", "Kängor/Stövlar", "38", "38"); 
addList("18", "Street", "39", "39"); 
addList("18", "Sandaler", "40", "40"); 
addList("18", "Träning", "44", "44"); 
addList("18", "Golfskor", "64", "64");
Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb