tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
1343
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    harder_xbx harder_xbx ist offline Grünschnabel
    Registriert seit
    Oct 2010
    Beiträge
    1
    ALso ich und kollege haben uns mal gefragt wie macht facebook das mit der Pinnwand

    Also wir sind so weit gekommen:
    du hast
    200 freunde auch dementsprechend 200 User_id
    die müssen jetzt ja abgefragt werden in der db tabelle "pinnwand" (von User :: message :: date)<--beispeile tabelle mysql
    aber vorher wohl alle User_id auflisten die der user hat

    so unsere frage ist eben wie die Db abfrage ausieht das nur die meldungen kommen die auch deine freunde sind.
    Wir kamen drauf ein schleife zu machen aber rein theoritisch würde es dann zu 200 db anfragen kommen oder irren wir uns da weil das haut ja die performence ja um!?
    weil nehmen wir ma du hast 1000 freunde in der liste xD
    Also uns geht es nur um die abfrage nicht die begrenzung (z.b 20 letzten pinnwand einträge)

    ich hoffe ichhab mich klar und deutlich ausgedrückt
    das thema hat uns 3 stunden beschäfftigt heute und wir sind zu keinem ergebinss gekommen
     

  2. #2
    Registriert seit
    Dec 2001
    Ort
    Bayern
    Beiträge
    5.802
    Blog-Einträge
    5
    Hallo,

    angenommen ihr habt folgendes Datenbankschema:

    users: [user_id, name]
    friendships: [user_id, friend_user_id]
    wall_entries: [user_id, text, timestamp]

    Dann könnte eine Abfrage der letzten 20 Pinnwandeinträge deiner Freunde so aussehen:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    SELECT
      friends.user_id,
      friends.name,
      wall_entries.text,
      wall_entries.TIMESTAMP
    FROM
      friendships
    INNER JOIN
      users AS friends ON (users.user_id = friendships.friend_user_id)
    INNER JOIN
      wall_entries ON (wall_entries.user_id = friends.user_id)
    WHERE
      friendships.user_id = $user_id
    SORT BY
      wall_entries.TIMESTAMP DESC
    LIMIT
      20

    \edit: Noch eine Alternative:
    Code sql:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    SELECT
      friends.user_id,
      friends.name,
      wall_entries.text,
      wall_entries.TIMESTAMP
    FROM
      wall_entries
    INNER JOIN
      users AS friends ON (users.user_id = wall_entries.user_id)
    WHERE
      wall_entries.user_id IN (
        SELECT friend_user_id
        FROM friendships
        WHERE user_id = $user_id
      )
    SORT BY
      wall_entries.TIMESTAMP DESC
    LIMIT
      20

    Grüße,
    Matthias
    Geändert von Matthias Reitinger (10.11.10 um 18:36 Uhr)
     
    „Gib einem Menschen einen Fisch, und er wird für einen Tag satt. Lehre ihn Fischen, und er wird ein Leben lang satt.“
    “For every complex problem, there is an answer that is short, simple and wrong.”
    “Pessimism is safe, but optimism is a lot faster!”


    Aktuelles Coding Quiz: #17 - Wörter kreuz und quer

  3. #3
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Ich verstehe ehrlich gesagt dein Problem jetzt nicht...?

    Die Tabelle Pinnwand, skizziert:
    [Besitzer]
    [Schreiber]
    [Nachricht]
    [Datum]

    Und wenn ich nun alle Einträge meiner Pinnwand haben will, lese ich halt alle Einträge aus, wo ich der Besitzer bin...
    Und wenn ich alle Einträge haben möchte, die von meinen Freunden sind, dann benutze ich ein Subselect als Bedingung, so dass nur die meiner Freunde ausgelesen werden...
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  4. #4
    Blackout289 Blackout289 ist offline Grünschnabel
    Registriert seit
    Dec 2009
    Beiträge
    3
    Joo,
    hab grad das Thema gefunden (mit der Suche ;D) und jetzt steh ich total aufm Schlauch
    Meine Tabellen sehen folgendermaßen aus:
    users: id|name|...
    friends: freundaid|freundbid|... (entweder ist man selbst a oder b, was auch mein problem ist ;D)
    pinnwand: autorid|...

    Wäre cool wenn mit jemand helfen könnte

    Danke
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 08.11.10, 16:03
  2. Antworten: 1
    Letzter Beitrag: 20.10.10, 19:54
  3. MySQL Abfrage bzw. Anzeige funktioniert nicht
    Von Boostergermany im Forum PHP
    Antworten: 2
    Letzter Beitrag: 01.05.10, 12:47
  4. Anzeige MEZ + Realtime + MySQL-Abfrage
    Von SimplyFred im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 17.02.10, 13:45
  5. Anzeige Seriendruckfeld & Wenn Dann Funktion
    Von Nospherates im Forum Office-Anwendungen
    Antworten: 3
    Letzter Beitrag: 23.10.08, 12:01