webForumDet fria alternativet

problem med att visa data

ASP

7 svar · 234 visningar · startad av Arre

Medlem sedan juli 200370 inlägg
Frågan#1

Hoppas att ni orkar läsa det här.
Jag håller på att göra en script för att lägga in album med "titel", "år" och "spår". Jag har skapat 2 st tabeller i databasen som heter "album" och "tracklisting". I album sparas informationen om albumet och i tracklisting sparas spårnamnen. ID'n som varje album får i tabellen "album" skrivs in i tabellen "tracklisting" i ett fält som heter albumID vid de spåren som är associerade till albumet. Detta för att veta vilka spår som tillhör de olika albumen.

Nu har jag ett problem. Jag vet inte exakt hur jag ska ta ut dessa värden från de olika tabellen, då dessa hör ihop. Om jag vill visa första albumet med ID'n 2 och dess spår som har en 2:a i deras albumID fält, hur ska jag gå tillväga??

Om ni vill se koden så e det bara o hojta till...

Tack på förhand!

Medlem sedan dec. 200012 464 inlägg
#2

Använd följande sql-fråga

select <deKolumneDuVillHa>
from album inner join tracklisting
on album.id = tracklisting.albumid
where album.id = 2
Medlem sedan juli 200370 inlägg
#3

menar du såhär?

SQL = "SELECT album.titel, album.year, album.bild, tracklisting.tracknumber, tracklisting.trackname FROM tracklisting INNER JOIN album ON tracklisting.albumID = album.albumID Where album.albumID="& albumId &" Order By tracknumber"

För det här kör jag nu.. o den skriver ut spåren så som det ska men, den visar bara ett album i taget...

Medlem sedan dec. 200012 464 inlägg
#4

den visar bara ett album i taget...

Eftersom du har villkoret

Where album.albumID="& albumId &"

så blir det så. Om du vill visa flera album så får du ändra på wherevillkoret. Vilka album vill du visa?

Medlem sedan juli 200370 inlägg
#5

Jaa såklart!
Tänkte inte ens på det... man kan ju göra såhär:
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ="& db2
SQL = "Select albumId, titel, bild From album Order By albumId desc"
Set RecSet = Conn.Execute(SQL)
%>
och sedan:
<%
Do Until RecSet.EOF
albumId = RecSet("albumID")
titel = RecSet("titel")
bild = RecSet("bild")
%>
och avslutningsvis:
<%
SQL = "Select * From tracklisting Where albumID = " & albumId &" Order By tracknumber"
Set RS = Conn.Execute(SQL)
Do Until RS.EOF
%>
<%=RS("tracknumber")%>.<%=RS("trackname")%>
<%
RS.MoveNext
Loop
Set RS = nothing
%>

Eller hur? =) funkar nu..

Tack så hemskt mycket för hjälpen!!

Medlem sedan juli 200370 inlägg
#6

drack en kopp kaffe o *vips* så slog det mig plötsligt :P

Medlem sedan dec. 200012 464 inlägg
#7

Jo, man kan men det finns ingen anledning att göra så. Det sättet är ett av de mest ineffektiva. Du kan få ut allt data med en fråga.

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)}; DBQ="& db2
SQL = "Select albumId, titel, bild,trackname,tracknumber  From album iner join tracklisting on album.id = tracklisting.albumid Order By albumId desc, trackNumber"
Set RecSet = Conn.Execute(SQL)
ptitel = ""
while not  RecSet.EOF
if  ptitel <> recset("titel") then
   albumId = RecSet("albumID")
   ptitel = RecSet("titel")
   bild = RecSet("bild")
   'skriv ut det du ska
end if

<%=RS("tracknumber")%>.<%=RS("trackname")%>
<%
RS.MoveNext
wend
Set RS = nothing
%>
Medlem sedan juli 200370 inlägg
#8

Underbart!
Funkar hur bra som helst... tack så hemskt mycket!

258 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)