29. april 2002 - 12:43Der er
18 kommentarer og 1 løsning
SQL Select spørgsmål
jeg har en filmdatabase, hvor jeg logisk nok har nogen film. Der kan godt være flere film med samme navn, da det er til en videobutik (skoleprojekt). Disse film adskiller sig kun ved et unikt ID nummer.
Problemet ligger i at når jeg lister filmene, kommer ID nummeret til filmen ikke til at passe. Dette skyldes at jeg kun vil have listet 1 af hver film. Dette gør jeg med en SELECT DISTINCT film_titel. Og i et andet recordset laver jeg så SELECT FilmI (ville gerne have selected dem i samme recordset, men DISTINCT's funktion ophører jo med at virke hvis jeg inkludere FilmID, da denne er unik).
Derefter, linker jeg så til mine film med en <a href="filmdetaljer.asp?id=<%=RS2("ID")%>"><=%RS1("film_titel")%></a>
Dette virker også fint, men så snart der kommer 2 film med samme titel, bliver filmid'et "forskudt" da den jo stadig vælger ALLE id'er, men kun de titler der er unikke.
Lidt svært at forklare, men håber i forstår, ellers så spørg igen. Jeg skal gerne uddybe.
mundi nej, distinct gælder for alle kolonner, også selvom du sætter titel i parantes, tager den stadig også distinct på ID.
Og til erik jacobsen Vores lærer kender intet til sql, så man må jo hente hjælp andre steder min database er meget mere avanceret end det fremstod før, skrev bare min problemstilling med en "opdigtet" database, for at simplificere problemstillingen. Men hvis du har et svar på hvordan jeg kunne løse problemet, frem for at snakke om selve database strukturen, ville det være rart
er ik meget for at floode dig, men her får du lige mine selects, så kan du måske se lidt bedre hvad jeg mener :)
sqlstring = "SELECT DISTINCT Titel, genre, aargang, beskrivelse FROM film_t WHERE Upper(titel) LIKE '%" & Ucase(Request.Form("titel")) & "%' AND Upper(aargang) LIKE '%" & Ucase(Request.Form("aargang")) & "%' AND Upper(genre) LIKE '%" & Ucase(Request.Form("genre")) & "%' ORDER BY titel"
sqlstring2 = "SELECT DISTINCT film_t.filmid, film_t.Titel FROM film_t WHERE Upper(titel) LIKE '%" & Ucase(Request.Form("titel")) & "%' AND Upper(aargang) LIKE '%" & Ucase(Request.Form("aargang")) & "%' AND Upper(genre) LIKE '%" & Ucase(Request.Form("genre")) & "%' ORDER BY titel"
Dette virker også fint, men er der 2 ens film i toppen, bliver der kun skrevet den ene tittel ud, hvilket er fint, da den samme film ikke skal stå flere gange. Men problemet er i oRS2, som har valgt ID for ALLE film, så derfor bliver film2, linket til film1's dobbeltgænger.
Nej, ingen svar fra mig, for jeg vil ikke have på samvittigheden at have fået betaling/point for at hjulpet dig med den her strukturering af dine data.
Group by giver li'så mange poster, som der er forskellige filmtitler. Du kan så lave forskellige beregninger på hver gruppe af ens filmtitler. F.eks. tage maximum, hvorved du får en "tilfældig" id fra de ens titler.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.