15. april 2013 - 20:45Der er
4 kommentarer og 1 løsning
MySQL join flere tabeller uden relation
Hejsa,
Mine Google-evner er åbenbart ikke så store som jeg troede. Jeg kan simpelthen ikke finde en reel guide, som skære ud i pap for mig, hvordan jeg kan lave én forespørgsel til at hente flere tabeller, uden en relation.
Jeg har eksempelvis 3 tabeller med følgende kolonner i:
T1: spil_id titel beskrivelse hits flashfil timestamp
T2: video_id titel beskrivelse hits filmlink timestamp
T3: billede_id titel beskrivelse hits billede timestamp
Hvordan i alverden får jeg hentet alle 3 rækker ud med en enkelt forespørgsel og sortere disse efter timestamp. Jeg vil nemlig gerne lave et "nyeste indhold"-script.
Der kræves flere ressourcer for at imødegå cybertruslerne. Det fremgår af en undersøgelse blandt 225 IT-chefer i Sverige, Norge og Danmark.
3. december 2024
Slettet bruger
15. april 2013 - 20:55#1
Du kunne prøve og kigge på UNION, men der mener jeg at kolonnenavnene skal hedde det samme for alle resultater. Det kan du evt. opnå ved at give spil_id/video_id/billede_id et alias til f.eks. bare "ID" og det samme for flashfil/filmlink/billede til f.eks. "SRC".
Synes godt om
Slettet bruger
15. april 2013 - 20:57#2
Og hvis du skal vide om den enkelte række hører til det ende eller andet, kan du tilføje en ny kolonne "on-the-fly" når du laver din UNION, med hvilken type resultatet det er (spil/video/billede).
Jeg er vidtgående enig med roxki (bortset fra, at i en UNION query behøver kolonnerne ikke at hedde det samme så længe de er af samme datatype.) Da jeg havde læst spørgsmålet og før jeg så roxki's indlæg stod det mig klart, at det var et typisk tilfælde for brug af UNION. roxki's ide med i queryen at lave en kolonne der viser hvilken tabel (hvilken indhold type) en række kommer fra havde jeg ikke selv tænkt på.
Når jeg alligevel blander mig, er det fordi du søgte noget der var temmelig 'skåret ud i pap'. Nu ved jeg ikke hvilken datatype flashfil, filmlink, og billede er. Hvis de er af samme data type, for eksempel BLOB (Binary Large Object) skulle nedenstående query virke. Ellers må du ekskludere disse felter i din oversigt. (Jeg går i den følgende query ud fra, at de ikke er af samme datatype.)
Jeg kunne forestille mig (jeg har ikke testet det) at den følgende query ville give dig en liste af alt indhold fra de tre tabeller, sorteret efter timestamp med den nyeste først:
SELECT spil_id AS id, 'spil', titel, beskrivelse, hits, timestamp FROM T1 UNION SELECT video_id AS id, 'video', titel, beskrivelse, hits, timestamp FROM T2 UNION SELECT billede_id AS id, 'billede' titel, beskrivelse, hits, timestamp FROM T3 ORDER BY timestamp DESC
SomTing, kom du fra det igen? Har du set de indlæg du fik på dette spørgsmål? Var de til nytte? Kom ind og fortæl hvad din videre hensigt er med spørgsmålet? Jeg opretter dette som svar for at lette lukningen, når tiden er inde, men du vil vel også invitere svar fra anden side?
SomTing, jeg prøver lige en gang mere. Kan jeg bede dig lukke det igen, i overensstemmelse med Ekspertens regler. Hvis du mener at have fået hjælp fra mig, så accepter venligst mit svar. I modsat fald, luk med eget svar eller bed om svar fra anden side. Men lad mig og de andre indlæggere ikke blive hængende i et åbent spørgsmål. Please.
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.