Avatar billede jesperchristiansen Nybegynder
07. marts 2007 - 04:36 Der er 5 kommentarer

nyeste post fra ens venner

Hejsa,

Jeg har 3 tabeller:
venner
beskeder
brugere

I venner tabellen, er brugerne linket sammen paa foelgende maade:
v_mitid = 1
v_ditid = 3

v_mitid = 3
v_ditid = 2

3 har altsaa 2 venner, nemlig bruger 1 og bruger 2.

I beskeder er der oprettet en raekke beskeder, med b_forfatter = b_id (som er brugerid).

Jeg vil nu gerne, at jeg se den nyeste post, for hver af bruger nummer 1's venner (altså i det tilfælde hvor enten v_ditid eller v_mitid er lig med 1).

Hvordan goeres dette?
Avatar billede b_ Nybegynder
07. marts 2007 - 18:50 #1
Tilknyt et datoformatfelt til beskeder, og sortere så efter den nyeste dato hos dine venner
Avatar billede jesperchristiansen Nybegynder
09. marts 2007 - 04:20 #2
Hmm.. Tror ik jeg forklarede mig selv godt nok. Proever lige igen! :)

FRIENDS:
f_id | f_myid | f_friendid
1    | 1      | 4
2    | 3      | 1
3    | 2      | 3

I venner tabellen, har bruger med ID = 1, 2 venner, nemlig ID = 4 og ID = 3 (ID herefter kaldt u_id). Bruger med ID = 2 har en ven, nemlig bruger id = 3. Bruger med ID 3, har 2 venner, nemlig bruger ID = 2 og bruger ID = 1 osv.

USERS:
u_id | u_name | u_picture
1    | Bob    | bob.jpg
2    | Bill  | bill.jpg
3    | Ben    | ben.jpg
4    | Mike  | mike.jpg

Users indeholder navne osv paa brugerne

MESSAGES:
m_id | u_id | m_msg | m_created
1    | 1    | test1 | timestamp1
2    | 3    | test2 | timestamp2
3    | 4    | test3 | timestamp3
4    | 4    | test4 | timestamp4
5    | 3    | test5 | timestamp5

Det jeg nu gerne vil er at hente den SENESTE besked ud, som alle Bruger ID 1's venner har skrevet (det vil sige den seneste besked for u_id = 3 og u_id = 4).

Det vil sige, det resultat jeg gerne vil have, ser saadan ud:

u_id | u_name | u_picture | m_msg | m_created
3    | Ben    | ben.jpg  | test5 | timestamp5
4    | Mike  | mike.jpg  | test4 | timestamp4

Hvordan goer jeg dette? Paa nuvaerende tidspunkt, har en en UNION paa 2 selects, hvor der i den ene er betingelsen f_myid = '1' og i den anden select, er der betingelsen f_friendid = '1' - dette giver mig en liste over alle mine venner. Men umiddelbart synes jeg at have problemer med at faa deres SENESTE (og kun den) post ud. Har leget lidt med max(m_msg) og saa lavet en join og grupperet paa u_ud. Men dette funker ikke rigtig naar det kun er mine venner jeg skal have ud.. Please help!
Avatar billede b_ Nybegynder
09. marts 2007 - 10:09 #3
Brug din timestamp til at sortere med. Du kan sortere resultatet på to måder; ASC og DESC. ASC betyder, at der sorteres ascending (Stigende – altså mindste er øverst og største nederst). DESC betyder det modsatte af ASC; faldende. Hvis man ikke skriver noget, så bliver der sorteret ascending.

For kun at vise den nyeste sæt LIMIT = 1;
Avatar billede jesperchristiansen Nybegynder
09. marts 2007 - 16:01 #4
Limit 1 giver mig jo bare 1 i alt.. Jeg vil gerne have sidste nye, for hver af mine venner..
Avatar billede b_ Nybegynder
09. marts 2007 - 17:38 #5
Ja ok, kunne hellere ikke forstår hvorfor du kun ville have den nyeste af alle, min fejl ;)

Jeg ville nok gøre noget i dur med at jeg først hentede alle X's venner, derefter ville jeg bruge outputtet til at gå ind og hente den nyeste besked (DESC) for hver enkel id der måtte være i outputtet.

Har desværre ikke tid til at komme med et kode-eksempel, da jeg er på vej ud af døren. Håber du alligevel kan bruge det til noget
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