buddy system

  1. mcnewbie

    mcnewbie Thread Starter MacUser Mitglied

    Mitglied seit:
    09.08.2004
    Beiträge:
    1.215
    Zustimmungen:
    5
    hallo leute,

    hab grad ein massives denkproblem. wir programmiern da gerade an einem buddy system für eine applikation.

    mir gehts jetz darum, dass ich rausfinde welcher user wen als buddy hat und wie der user buddies hinzufügen kann.

    ich hab jetz mal 2 tabellen:

    1. user - uid | username | bla | bla
    2. buddies - uid | bid

    in der 2. hätt ich halt die user id und als bid die use id des users, den user X als buddy hat


    gut jetz ahb ich da zB in tabelle 2

    1 | 2
    1 | 2
    2 | 5
    2 | 7

    alles fein soweit

    jetz will ich einen query der mir alle usernamen der buddies von user '1' gibt.... ich bin gerade zu doof und komm nciht drauf, bin für hilfe dankbar!!

    cheers
     
    mcnewbie, 04.12.2006
    #1
  2. PowerBookGrafik

    PowerBookGrafik MacUser Mitglied

    Mitglied seit:
    12.03.2005
    Beiträge:
    812
    Zustimmungen:
    5
    SELECT bid FROM tabelle WHERE id = 2;

    ?
    Oder hab ich dich falsch verstanden
     
    PowerBookGrafik, 04.12.2006
    #2
  3. mcnewbie

    mcnewbie Thread Starter MacUser Mitglied

    Mitglied seit:
    09.08.2004
    Beiträge:
    1.215
    Zustimmungen:
    5
    ja scho, aba die id is ne zahl udn ih will den nahmen *grübel*
     
    mcnewbie, 04.12.2006
    #3
  4. PowerBookGrafik

    PowerBookGrafik MacUser Mitglied

    Mitglied seit:
    12.03.2005
    Beiträge:
    812
    Zustimmungen:
    5
    du machst dann einfach in einer schleife eine abfrage mit dem result der ersten abfrage mit jeweils

    SELECT username FROM user WHERE id=result;

    --> in der schleife
     
    PowerBookGrafik, 04.12.2006
    #4
  5. mcnewbie

    mcnewbie Thread Starter MacUser Mitglied

    Mitglied seit:
    09.08.2004
    Beiträge:
    1.215
    Zustimmungen:
    5
    hm ja das wäre ein idee... ein einem query gehts ned oda?
     
    mcnewbie, 04.12.2006
    #5
  6. PowerBookGrafik

    PowerBookGrafik MacUser Mitglied

    Mitglied seit:
    12.03.2005
    Beiträge:
    812
    Zustimmungen:
    5
    oja mit Joins, aber da musst du auf die antwort eines anderen warten aber irgendwie so:

    SELECT id, bid, username FROM user,buddies WHERE id = 2;

    aber für sowas hast du glaube ich eine falsche datenstruktur

    aber such mal nach joins bzw semi joints
     
    PowerBookGrafik, 04.12.2006
    #6
  7. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    Es muss heissen joins und genau damit geht es!

    Code:
     SELECT bid, username FROM user,buddies WHERE id = 2 and buddies.uid=user.uid
    
     
    wegus, 05.12.2006
    #7
  8. PowerBookGrafik

    PowerBookGrafik MacUser Mitglied

    Mitglied seit:
    12.03.2005
    Beiträge:
    812
    Zustimmungen:
    5
    danke dir ... gibts irgendwo ne kleine site über joins wo diese gut erklärt sind ?
     
    PowerBookGrafik, 05.12.2006
    #8
  9. Gunter_S

    Gunter_S MacUser Mitglied

    Mitglied seit:
    15.03.2004
    Beiträge:
    147
    Zustimmungen:
    3
    ja, mysql.com

    Ich würde allerdings zu "LEFT JOIN" tendieren, da das weniger aufwendig als ein einfacher JOIN ist. Das würde dann so aussehen:
    Code:
    SELECT `t2`.* FROM buddies AS `t1` LEFT JOIN user AS `t2` ON (`t1`.`bid` = `t2`.`uid`) WHERE (`t1`.`uid` = 2) AND (`t1`.`bid` IS NOT NULL)
    
    Ein LEFT JOIN bearbeitet erst die die Datensätze aus der ersten Tabelle und sucht dann die dazu passenden Datensätze aus der zweiten Tabelle (usw.: können ja auch mehr wie zwei Tabellen sein).
    Ein einfacher JOIN dagegen kombiniert erst beide Tabellen und sucht dann in der "erzeugten" Tabelle. Das führt bei großen Tabellen zu einem erheblichen Mehraufwand.

    Gunter
     
    Gunter_S, 05.12.2006
    #9
  10. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    14.982
    Zustimmungen:
    1.545
    :jaja: recht Du hast! Ich hab's nicht gemacht, weil ich eher selten mit mysql arbeite und mir nicht sicher war welche Version nun was kann (ich nutze meist MS SQL mit Transact SQL).
     
    wegus, 05.12.2006
    #10
Die Seite wird geladen...
Ähnliche Themen - buddy system
  1. mac*berlin
    Antworten:
    2
    Aufrufe:
    2.323
    mac*berlin
    31.10.2012
  2. xy-Man
    Antworten:
    4
    Aufrufe:
    1.067
    ProUser
    09.06.2012
  3. Laub
    Antworten:
    15
    Aufrufe:
    2.082
    wegus
    02.11.2011
  4. keykiller
    Antworten:
    21
    Aufrufe:
    1.833
    Jakob
    09.05.2008