Gå til innhold

Hente ut informasjon fra forskjellige tables og hente ut siste row


Anbefalte innlegg

Hei!

 

Jeg har 8 helt identiske MySQL tables, eneste forskjellen er innholdet i dem. Akkurat nå bruker jeg en lang query for å hente ut alt fra alle tablene, og så hente ut siste ved å bruke timestamp. Men, problemet er det at jeg ikke vet hvilken table det kommer fra!

 

SELECT * FROM `marius2011_pixelpost` 
UNION SELECT * FROM `Karin_pixelpost`
UNION SELECT * FROM  `JanGunnar_pixelpost` 
UNION SELECT * FROM `Nathaniel_pixelpost`
UNION SELECT * FROM `Henning2011_pixelpost`
UNION SELECT * FROM `Duncan_pixelpost`
UNION SELECT * FROM `Cathrine_pixelpost` 
ORDER BY `datetime` DESC LIMIT 1

 

Eksisterer det en bedre måte å gjøre dette på, eller en måte å få MySQL serveren til å outputte hvilken table det er den viser det fra?

Lenke til kommentar
Videoannonse
Annonse

select 'tabellnavnet' as tabellnavn,* from tabellnavnet

 

antar du vil vite hvilken tabell dataene kommer fra fordi tabellnavnet viser hvilken person dataene tilhører. du må isteden legge til ett felt til som inneholder navnet på pixelpost-personen. da kan du klare det samme med en tabell.

 

eventuelt legger du personene i en egen tabell, og referer til dem fra datatabellen ved hjelp av en fremmednøkkel.

 

 

 

select * from pixeldata d inner join person p on p.person_id = d.person_id

Endret av quantum
Lenke til kommentar

Hei!

 

Jeg har 8 helt identiske MySQL tables, eneste forskjellen er innholdet i dem. Akkurat nå bruker jeg en lang query for å hente ut alt fra alle tablene, og så hente ut siste ved å bruke timestamp. Men, problemet er det at jeg ikke vet hvilken table det kommer fra!

 

SELECT * FROM `marius2011_pixelpost` 
UNION SELECT * FROM `Karin_pixelpost`
UNION SELECT * FROM  `JanGunnar_pixelpost` 
UNION SELECT * FROM `Nathaniel_pixelpost`
UNION SELECT * FROM `Henning2011_pixelpost`
UNION SELECT * FROM `Duncan_pixelpost`
UNION SELECT * FROM `Cathrine_pixelpost` 
ORDER BY `datetime` DESC LIMIT 1

 

Eksisterer det en bedre måte å gjøre dette på, eller en måte å få MySQL serveren til å outputte hvilken table det er den viser det fra?

 

En veldig enkel løsning på ditt problem er å legge til en fastfelt verdi som rett og slett gir deg tabellen det kommer fra.

 

SELECT *, 'marius' as tabell FROM `marius2011_pixelpost` 
UNION SELECT *, 'Karin' as tabell FROM `Karin_pixelpost`
UNION SELECT *, 'JanGunnar' as tabell FROM  `JanGunnar_pixelpost` 
UNION SELECT *, 'Nathaniel' as tabell FROM `Nathaniel_pixelpost`
UNION SELECT *, 'Henning' as tabell FROM `Henning2011_pixelpost`
UNION SELECT *, 'Duncan' as tabell FROM `Duncan_pixelpost`
UNION SELECT *, 'Cathrine' as tabell FROM `Cathrine_pixelpost` 
ORDER BY `datetime` DESC LIMIT 1

Lenke til kommentar

Tusen takk for gode svar! Skal ta en titt på det i kveld!

 

hvis det ikke er helt spesiele behov som ikke er nevnt her, er det ikke god praksis å ha en tabell pr. person. op kan lese litt om databasenormalisering på feks wikipedia.

 

Ja, jeg her klarover det, men siden jeg bruker en ferdig fotobloggingsløsning, så har jeg ikke så mye valg uten å måtte bruke relativt mange timer på å endre det som allerede er laget. Får se om jeg gidder å lage noe fra scratch iløpet av året. :]

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...