13. november 2008 - 00:56Der er
10 kommentarer og 1 løsning
Hent fra flere tabeller
Hej,
Jeg har en hjemmeside, hvor man kan skrive kommentarer til nogle videoklip og nogle beretninger.
På forsiden ønsker jeg et overblik over de nyeste kommentarer. Der skal altså udtrækkes kommentarer fra de to tabeller "beretninger_kommentarer" og "video_kommentarer" og så sorteres efter dato:
SELECT beretningid, brugerid, kommentar, dato FROM beretninger_kommentarer WHERE rights<='3' UNION SELECT videoid, brugerid, kommentar, dato FROM video_kommentarer WHERE rights<='3' ORDER BY dato DESC LIMIT 20
Et af felterne jeg udtrækker er brugerid. Jeg ønsker at udskifte dette med et navn (nick). Men hvordan kan jeg gøre det. Normalt gør jeg således: SELECT users.nick (...) FROM (...) LEFT JOIN users ON users.id=beretninger_kommentarer.brugerid
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
SELECT beretningid, brugerid, kommentar, dato FROM beretninger_kommentarer LEFT JOIN users ON users.id=beretninger_kommentarer.brugerid WHERE rights<='3' UNION SELECT videoid, brugerid, kommentar, dato FROM video_kommentarer LEFT JOIN users ON users.id=video_kommentarer.brugerid WHERE rights<='3' ORDER BY dato DESC LIMIT 20
Hej Arne, Mange tak for hjælpen. Koden virker fint, og er ændret til nedenstående, men er der nogle ændringer der kan optimere koden?
SELECT users.nick, videoid, brugerid, kommentar, dato, tabel FROM video_kommentarer LEFT JOIN users ON users.id=video_kommentarer.brugerid WHERE video_kommentarer.rights<='3' UNION SELECT users.nick, beretningid, brugerid, kommentar, dato, tabel FROM beretninger_kommentarer LEFT JOIN users ON users.id=beretninger_kommentarer.brugerid WHERE beretninger_kommentarer.rights<='3' UNION SELECT users.nick, bookings.id, brugerid, kommentar, dato, tabel FROM bookings LEFT JOIN users ON users.id=bookings.brugerid ORDER BY dato DESC LIMIT 20
Jeg har et problem. Når jeg kører på localhost fungerer nedenstående query fint, men når jeg uploader det til min udbyders server får jeg timeout error. Det er ikke en php fejl, men derimod Firefox der siger, at siden overskrid tidsbegræsningen. Hvad gør jeg galt?
SELECT users.nick, video.titel, video_kommentarer.videoid AS id, kommentar, video_kommentarer.dato, tabel FROM video_kommentarer LEFT JOIN users ON users.id=video_kommentarer.brugerid LEFT JOIN video ON video.id=video_kommentarer.videoid WHERE video_kommentarer.rights<='".$_SESSION[rights]."'
UNION ALL SELECT users.nick, beretninger.emne, beretningid, kommentar, beretninger_kommentarer.dato, tabel FROM beretninger_kommentarer LEFT JOIN users ON users.id=beretninger_kommentarer.brugerid LEFT JOIN beretninger ON beretninger.id=beretninger_kommentarer.beretningid WHERE beretninger_kommentarer.rights<='".$_SESSION[rights]."'
UNION ALL SELECT users.nick, album.title, albumid, besked, album_kommentarer.dato, tabel FROM album_kommentarer LEFT JOIN users ON users.id=album_kommentarer.brugerid LEFT JOIN album ON album.id=album_kommentarer.albumid WHERE album_kommentarer.rights<='".$_SESSION[rights]."'
UNION ALL SELECT users.nick, uge, bookings.id, kommentar, dato, tabel FROM bookings LEFT JOIN users ON users.id=bookings.brugerid ORDER BY dato DESC LIMIT 40
Det har jeg i hvert fald nu - lader til at virke :) Igen tak! :)
Synes godt om
Ny brugerNybegynder
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.