Yaricks Skrevet 1. januar 2011 Del Skrevet 1. januar 2011 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
quantum Skrevet 2. januar 2011 Del Skrevet 2. januar 2011 (endret) 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 2. januar 2011 av quantum Lenke til kommentar
Wolverin Skrevet 2. januar 2011 Del Skrevet 2. januar 2011 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
quantum Skrevet 3. januar 2011 Del Skrevet 3. januar 2011 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. Lenke til kommentar
Yaricks Skrevet 3. januar 2011 Forfatter Del Skrevet 3. januar 2011 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
quantum Skrevet 3. januar 2011 Del Skrevet 3. januar 2011 Kanskje de har gjort det slik pga autentisering og rettigheter i mysql. Uansett ikke optimalt. Men når det ikke er din datamodell er det ikke ditt problem heller ;-) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå