Avatar billede truthorn Nybegynder
26. juni 2002 - 11:35 Der er 5 kommentarer og
1 løsning

Join

Jeg har to tabeller, som jeg forsøger at joine...men jeg har et problem :-/

tabel - kontakter:
Dette er en tabel over kontakter (personer

tabel - noter:
Her kan man notere under hver kontakt (dvs. der er mange noteringer for hver person)

-----------------------
SELECT * FROM kontakter
LEFT JOIN noter ON kontakter.kontakterid=noter.kontakt_id
-----------------------

Ovenstående JOIN giver ALLE noteringer, men hvis jeg nu kun ønsker én notering pr. person (dvs. den seneste - denne kan findes via et min timestamp-kolonne).

Jeg er desværre ikke den store SQL-haj - bare at svaret er derefter .)
Avatar billede truthorn Nybegynder
26. juni 2002 - 11:36 #1
kontakterid:Primærnøgle i tabellen: kontakter
kontakt_id: Fremmednøgle i tabellen noter

.)
Avatar billede hansk Nybegynder
26. juni 2002 - 12:20 #2
SELECT kontakter.felt1, kontakter.felt2, kontakter.felt3, noter.felt1,
Max(noter.timestampCol) FROM kontakter, noter
LEFT JOIN noter ON kontakter.kontakterid=noter.kontakt_id
GROUP BY kontakter.felt1, kontakter.felt2, kontakter.felt3, noter.felt1

så får du kun seneste note med.
Avatar billede truthorn Nybegynder
26. juni 2002 - 12:40 #3
Det der er jo rigtig rigtig lækkert - og det ser ud til at virke :)
Den der MAX(tabel.kolonne) - udtrykker den, at der kun må være ét resultat - eller kan den i princippet også udtrykke noget andet?
Avatar billede hansk Nybegynder
26. juni 2002 - 12:47 #4
MAX er en gruppefunktion. Den giver maximum værdien af en kolonne indenfor en gruppering. Der findes også MIN,AVG, SUM osv.
Avatar billede truthorn Nybegynder
26. juni 2002 - 12:50 #5
OK, men dvs. den knytter sig til GROUP BY - og GROUP BY, er det så en måde at sige du skal gruppere svarene (dvs. kære SQL-database du skal ikke vise alle resultater - du skal gruppere dem, fordi de faktisk i virkeligheden hænger sammen) - er sådan noget i den retning....?
Avatar billede truthorn Nybegynder
26. juni 2002 - 12:53 #6
Lige en ekstra ting, jeg kan se, at den lige nu tager den første note (dvs. ASC i forhold til "timestamp" - kan man få den til at tage DESC, så den viser den senest noterede note?
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
Computerworld tilbyder specialiserede kurser i database-management

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