Gå til innhold

Sammenslåing av table rows fra flere MysQL-tabeller


Anbefalte innlegg

Hei,

Jeg ser at det er et antall ulike tråder her angående ulike JOIN av databasetabeller, men jeg kan ikke helt finne noen som helt svarer på det jeg nå skal spørre om:

La oss si at jeg har tre tabeller:

1. blomster
2. fugler
3. dyr

som alle har fire kolonner: idnorsk_navn, latinsk_navn og timestamp.

Jeg ønsker å få en oversikt over de f.eks. 10 siste opplastede artene sortert etter timestamp.

(Altså echo av idnorsk_navn, latinsk_navn, og timestamp uavhengig av hvilken tabell resultatene er i).

Jeg klarer å få dette til med én tabell om gangen, ikke tre.

 

Hvordan må query'en for noe slikt konstrueres?
 

Lenke til kommentar
Videoannonse
Annonse

Mulig noe slikt kan fungere (har ikke testet)

SELECT
    id, norsk_navn, latinsk_navn
FROM (
    SELECT b.id, b.norsk_navn, b.latinsk_navn, b.timestamp FROM blomster AS b ORDER BY b.timestamp DESC
    UNION
    SELECT f.id, f.norsk_navn, f.latinsk_navn, f.timestamp FROM fugler AS f ORDER BY f.timestamp DESC
    UNION
    SELECT d.id, d.norsk_navn, d.latinsk_navn, d.timestamp FROM dyr AS d ORDER BY d.timestamp DESC
) AS felles
ORDER BY timestamp DESC
LIMIT 10
Endret av Crowly
Lenke til kommentar

Mulig noe slikt kan fungere (har ikke testet)

SELECT
    id, norsk_navn, latinsk_navn
FROM (
    SELECT b.id, b.norsk_navn, b.latinsk_navn, b.timestamp FROM blomster AS b ORDER BY b.timestamp DESC
    UNION
    SELECT f.id, f.norsk_navn, f.latinsk_navn, f.timestamp FROM fugler AS f ORDER BY f.timestamp DESC
    UNION
    SELECT d.id, d.norsk_navn, d.latinsk_navn, d.timestamp FROM dyr AS d ORDER BY d.timestamp DESC
) AS felles
ORDER BY timestamp DESC
LIMIT 10

Takk for svar :) 

Hva mener du med "AS felles"?

Lenke til kommentar

 

Mulig noe slikt kan fungere (har ikke testet)

SELECT
    id, norsk_navn, latinsk_navn
FROM (
    SELECT b.id, b.norsk_navn, b.latinsk_navn, b.timestamp FROM blomster AS b ORDER BY b.timestamp DESC
    UNION
    SELECT f.id, f.norsk_navn, f.latinsk_navn, f.timestamp FROM fugler AS f ORDER BY f.timestamp DESC
    UNION
    SELECT d.id, d.norsk_navn, d.latinsk_navn, d.timestamp FROM dyr AS d ORDER BY d.timestamp DESC
) AS felles
ORDER BY timestamp DESC
LIMIT 10

Takk for svar :)

Hva mener du med "AS felles"?

 

 

Han gir et nytt navn på kolonnen hvor outputen vises (her: felles).

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...