Avatar billede SimonBStoevring Nybegynder
28. januar 2011 - 08:51 Der er 4 kommentarer

Hente fra tre tabeller

Hej,

Jeg forsøger at hente data fra tre tabeller i min database og sortere dem efter feltet 'time', som alle tre tabeller har tilfælles.

Det er til et link/image-board hvor jeg gemmer boards i én tabel, kommentarer i et andet og "likes" i en tredje.

Nu vil jeg gerne kunne udskrive alt aktivitet i kronologisk rækkefølge og derefter hente fra alle tre databaser, "blande dem sammen" og sortere efter 'time'.

Jeg har læst lidt på det og har ikke kunnet finde ud af, hvordan jeg gør det. Er der nogen, som kan hjælpe mig videre?
Avatar billede repox Seniormester
28. januar 2011 - 09:07 #1
Du kunne eventuelt kigge lidt på mysql dokumentationen: http://dev.mysql.com/doc/refman/5.0/en/union.html
Avatar billede kentora Nybegynder
28. januar 2011 - 10:22 #2
Måden jeg ville gøre det på var at sætte data fra hvert databasekald ind i en array med time (dette kræver at du ikke har to ens tidspunkter), og derefter sortere dem med ksort(); og så med en foreach for enden. :)
Avatar billede SimonBStoevring Nybegynder
28. januar 2011 - 12:12 #3
repox, mange tak. Den manual kendte jeg slet ikke. Det er nok også for ringe... :-$

kentora, det er ikke en dårlig idé. Jeg har bare mange celler fra tabellerne, som jeg skal have gemt i arrayet og det bliver noget rod. Så kan jeg måske gemme ID og 'time' på forekomesten i et array og når jeg har sorteret dem og løber dem igennem, så lave en forespørgsel for hver forekomst i arrayet. Det er mange forespøegelser til databasen, men der er vist ingen anden udvej.
Medmindre jeg kan finde noget i manualen, som repox linker til.
Avatar billede the_magician Nybegynder
31. januar 2011 - 00:00 #4
Du kan lave noget der hedder en join på feltet time. Det du skal lede efter er RIGHT JOIN og LEFT JOIN og måske skal du også bruge GROUP BY. Jeg kan lige prøve at finde nogle eksempler i morgen...

Fra hukommelsen mener jeg at det skal ligne
SELECT t1.image AS billede, t2.comment AS kommentar, t3.likes AS like FROM tabel_et AS t1, tebel_to AS t2, tabel_tre AS t3 LEFT JOIN t1.tid=t2.tid GROUP BY t1.tid ORDER BY t1.tid ASC;
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester