Avatar billede michaeltryl Seniormester
17. september 2008 - 21:36 Der er 8 kommentarer og
1 løsning

join af to tabeller?

jeg har denne forspørgsel

$ny_kommentar_antal = mysql_query("SELECT gb_id FROM gaestebog WHERE til_bruger_id='$bruger_id'") or die(mysql_error());

men den skal kun hente de beskeder hvor:
feltet til_bruger_id='$bruger_id' og
dato er skrevet efter sidst_online

feltet sidst_online er i tabellen brugere og feltet dato er i tabellen gaestebog.

hvordan joiner jeg og finder de beskeder?
Avatar billede komputerdk Mester
17. september 2008 - 22:10 #1
er ikke helt sikker på hvad du mener, men kan du ikke bruge

SELECT gb_id FROM gaestebog WHERE til_bruger_id='$bruger_id' AND DATE(now())> $sidste_online") or die(mysql_error());
Avatar billede michaeltryl Seniormester
17. september 2008 - 22:20 #2
nej det kan den ikke.
jeg har tabellen
gaestebog
hvor jeg skal have talt alle de beskeder som er skrevet siden brugeren sidst var online. tiden for hvornår brugeren sidst var online (sidst_online) er gemt i tabellen
brugere
jeg skal derfor sammenligne feltet dato (gaestebog) med feltet sidst_online (brugere) for at finde de beskeder som er skrevet siden brugeren sids var online.
Avatar billede fant0mas Nybegynder
17. september 2008 - 23:15 #3
Du skal bruge en reference at joine på. Hvis gb_id er brugerid'et, så skal det også forefindes i brugere tabellen, og så vil det se sådan ud.

SELECT g.gb_id
FROM gaestebog AS g
LEFT JOIN brugere AS b ON b.id = g.gb_id
WHERE g.til_bruger_id='$bruger_id'
AND DATE(now()) > '$sidst_online'
Avatar billede fant0mas Nybegynder
17. september 2008 - 23:21 #4
argh.

AND DATE(now()) > b.sidst_online
Avatar billede jakobdo Ekspert
18. september 2008 - 08:11 #5
Hvorfor lave det i en join ?
Hvorfor ikke trække sidst_online ud i en query og så bruge den sammen med din: $ny_kommentar_antal = mysql_query("SELECT gb_id FROM gaestebog WHERE til_bruger_id='$bruger_id'") or die(mysql_error());

En join er ikke altid den smarteste løsning.
Måske er det sejt at lave det i en SQL, men det bliver ikke nemmere at se hvad der sker og fejlsøge efterfølgende.
Avatar billede michaeltryl Seniormester
18. september 2008 - 20:40 #6
okay troede det var bedst at samle det i én SQL jeg bruger jakobdo løsning da den er nemmere for mig at ændre på senere hvis det bliver nødvendig.
vil du smide et svar jakobdo og tak for hjælpen.
Avatar billede jakobdo Ekspert
18. september 2008 - 20:44 #7
Du får et svar så!
Avatar billede fant0mas Nybegynder
18. september 2008 - 22:24 #8
Haha, jakobdo - hvis det er lykkedes dig at score derude i den virkelige verden vha. et join, så er du gud i min verden.
Desuden så er jeg uenig - måske ikke i dette tilfælde, men generelt burde brugeren bruge tid på at lære og forstå sammenlægning af tabeller. -Og man skal jo starte et sted...
Avatar billede jakobdo Ekspert
19. september 2008 - 08:23 #9
fant0mas: Jeg er også enig i at join bør bruges hvor det har sin ret. Men overskuelig kode er jo lige så godt.
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