Avatar billede mrjowns Novice
18. februar 2004 - 21:27 Der er 9 kommentarer og
1 løsning

Udtræk fra database - problemer

Det her er garanteret et rimelig simpelt spm, men jeg kan ikke lige overskue det.

Jeg råder over en MySQL db med følgende tabeller:

Kursus (tabel)
- kurdate (felt)
Events (tabel)
- startdato (felt)

Mit spørgsmål er så, hvordan jeg hiver data ud af disse to tabeller, hvor data sorteres efter både kurdate og startdato, og LIMIT 5? Så det f.eks. kan udskrives sådan:

27.10.2004 Dommerkursus (fra tabellen Kursus)
11.11.2004 Legedag (fra tabellen Events)
12.11.2004 Svømmekursus (fra tabellen Kursus)
20.11.2004 Orienteringsløb (fra tabellen Events)
01.12.2004 Late Night Shopping (fra tabellen Events)

Hvordan kan jeg gøre dette? Eller skal det ind i et arrey først? Håber I kan hjælpe!
Avatar billede zkiifreak Nybegynder
18. februar 2004 - 22:12 #1
Har du brug for noget, der deler det op sådan, at du får mulighed for at dele data op således, at der max udskrives 5 poster pr side??? Så har jeg en udemærket side til dette.

ZkiiFreak
Avatar billede mrjowns Novice
18. februar 2004 - 22:14 #2
Jeg har brug for en SQL-sætning der hiver data ud (max 5 rækker) og sorterer det efter både kurdate og startdato...
Avatar billede zkiifreak Nybegynder
18. februar 2004 - 22:21 #3
Så skal du bruge LIMIT 5 og også ORDER BY... Altså noget a'la:
    Conn = 'din connection til din databases opsætning
        Set rs = Server.CreateObject( "ADODB.Recordset" )
    call rs.Open("SELECT * FROM Kursus, Events ORDER BY kurdate, startdato DESC LIMIT 5", Conn)
Dette burde faktisk virke... Ved ikke 100% om den tager 5 ialt eller 5 fra hver, men er næsten sikker på, at det er ialt.

ZkiiFreak
Avatar billede mrjowns Novice
18. februar 2004 - 22:23 #4
Hvordan havde du så tænkt dig at jeg skulle skrive dem ud i et loop? rs("?")

Jeg er helt med på hvordan man ellers sammensætter sql-sætninger (LIMIT og ORDER BY) men hvad skal jeg skrive når det skal udskrives?
Avatar billede eagleeye Praktikant
18. februar 2004 - 22:30 #5
Det kan gøres med en UNION SQL, det kræver så mySQL version >= 4.0

SQL = "SELECT * FROM (SELECT kurdate as dato, kurnavn as navn FROM kursus UNION ALL SELECT startdato as dato, eventnavn as navn FROM Events) ORDER BY dato DESC;"
Set rs = Conn.Execute(SQL)

do while not rs.EOF
  Response.write rs("dato") & " " & rs("navn") & "<br>"
  rs.MoveNext
loop

og man skal angive samme antal kolonne i begge selects, her vist med to kommern
Avatar billede zkiifreak Nybegynder
18. februar 2004 - 22:33 #6
Ser rigtigt ud... Jeg er ikke så stiv til at arbejde med 2 tabeller på en gang i SQL-sætninger... Ked af jeg ikke kunne hjælpe mere.

ZkiiFreak
Avatar billede eagleeye Praktikant
18. februar 2004 - 22:35 #7
Lidt mere information omkring UNION: http://www.mysql.com/doc/en/UNION.html
Avatar billede mrjowns Novice
20. februar 2004 - 09:39 #8
Undskyld den lange ventetid! Cool Eagleeye - det var lige hvad jeg skulle bruge. Laver du et svar?
Avatar billede eagleeye Praktikant
21. februar 2004 - 23:00 #9
Ja det gør jeg da gerne :)
Avatar billede mrjowns Novice
05. maj 2004 - 12:09 #10
Better late then never...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester