Hej! Om du har en tabell tblRecords och en tabell tblTracks. Sedan skapar du en kopplingtabell mellan dessa tabeller Hej där! Just nu är det alltså två frågor: Eftersom det brukar vara datrabashämtningen som tar längst tid så skulle jag nog hämta all data som jag vill ha från databasen och sen efterbehandla den i mitt program. Trots att mitt recordset då blir STORT? Hur stort är stort? Jag har rs som är ca 1500 poster med sex kolumner Förslag på fråga. KAnske fins några fel i den. Men bör nog funka:Lista poster med SQL
Jag håller på med en databas för att hålla reda på mina skivor och låtarna på dessa. Databasen är gjord i Access och webbsidorna jag använder för sökningar är gjorda i ASP.
Frågan gäller om hur jag ska göra för att lista ett antal skivor och alla låtar på dem. Som sidan är skriven nu gör jag först en SQL-slagning där jag får ut alla skivor. Sedan slår jag en gång per skiva för att få fram låtarna. Detta tar en del tid när jag listar många skivor.
Är det bättre att lista alla låtar "flera gånger", dvs varje låt listas en gång per skiva den finns på? Då behövs bara en slagning men mitt recordset blir i stället jättestort...
Eller finns det någon bättre lösning?
Sidorna finns på http://www.purjo.com/purjo/skivor/
Sidan jag i första hand undrar över är "sök release".
/ DavidSv: Lista poster med SQL
tblrecords -< tblrectrac >- tblTracks
Då kan du lista låtarna en gång i en tabell och skivorna i den andra tabellen. Kopplingstabellen använder du sedan för att koppla samman dessa tabeller.
NettanSv: Lista poster med SQL
Jo, jag har en tabell med låtar och en med skivor med en kopplingstabell emellan. Det är när jag hämtar datat ur tabellerna som jag är osäker...
/ DavidSv: Lista poster med SQL
<code>
<% SQL = "SELECT r.releaseID, r.artistID, titel, format, r.utgivningsar, katalognummer, bild, artistnamn FROM release r, artist a WHERE a.artistnamn LIKE '"& findartist &"%' AND titel LIKE '"& findtitel &"%' AND a.artistID=r.artistID ORDER BY artistnamn, titel, r.utgivningsar, katalognummer" %>
<% SQL2 = "SELECT a.artistID, artistnamn, namn, tid FROM tracknummer tn, track t, artist a WHERE tn.trackID=t.trackID AND t.artist=a.artistID AND tn.releaseID="& releaseID &" ORDER BY tracknummer" %>
</code>
Fråga två loopas alltså för varje skiva. Det känns som om det borde gå att lösa på ett enklare/mindre krävande sätt...
/ DavidSv: Lista poster med SQL
/EmmaSv: Lista poster med SQL
En del låtar finns ju på tre-fyra skivor men vid närmare eftertanke har du nog rätt!
/ DavidSv: Lista poster med SQL
som jag efterbehandlar. När man väl hämtat det går det rätt snabbt att
göra efterbehandlingen. Skulle ta längre tid att hämta allt stötvis.
/EmmaSv: Lista poster med SQL
SELECT r.releaseID, r.artistID, r.titel, r.format, r.utgivningsar, r.katalognummer, r.bild, ra.artistnamn, ta.artistID, ta.artistnamn, ta.namn, ta.tid
FROM release r LEFT OUTER JOIN
artist ra ON ra.artistID = r.artistID LEFT OUTER JOIN
tracknummer tn ON tn.releaseID = r.releaseID LEFT OUTER JOIN
track t ON tn.trackID = t.trackID LEFT OUTER JOIN
artist ta ON t.artist = ta.artistID
WHERE ra.artistnamn LIKE '" & findartist & "%' AND r.titel LIKE '" & findtitel & "%'
ORDER BY ra.artistnamn, r.titel, r.utgivningsar, r.katalognummer, tracknummer