Jetzt Mitglied werden

Kostenlos registrieren und die vielen Vorteile der Webmasterpro-Mitgliedschaft nutzen.

Login für Mitglieder

Forum - Entwicklung

Info: Der Stern signalisiert, dass neue Beiträge vorhanden sind.

Über Webmasterpro.de

Das Portal wird betrieben und entwickelt durch die Team23 Agentur. Die Augsbuger Agentur hat sich auf Community Software und die Entwicklung von Webportalen spezialisiert.

Datenbanken (SQL) - Forum

Derzeit sind Sie als Gast in unserem Forum aktiv. Für das Schreiben registrieren Sie sich bitte. Unser Forum ist eine Austauschplattform für Webworker zum Kommunizieren, Helfen, Informieren und Hilfe finden. Auf der rechten Seiten finden Sie eine Forenübersicht über alle Bereiche des Webmaster-Forums. Unterhalb finden Sie alle aktuellen Themen.

SQL Statement für Abfrage von mehreren Tabellen?

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Nocke1984 Nocke1984, am Freitag den 20.08.2010 um 21:06:36

Hallo zusammen,

ich hab grade ein kleines Problem wo ich nicht weiter komme... Ich bin grad bei einem kleinen Projekt bei dem der Nutzer eine "Freundesliste" hat und auf der Startseite alle Statusnachrichten seiner Freunde sehen soll.

Zu diesem Zweck gibt es 3 Tabellen:

Tabelle USER  
HTML
1
2
3
4
5
 ID NAME    VORNAME     EMAIL       ...
 1  Müller  Hans        hans@gmx.de ...
 2  Froh    Peter       peter@mail.de   ...
 3  Ärger   Klaus       kl@nichts.com   ...
 4  Mut Angie       angie@hallo.de  ...
Tabelle Freunde  
HTML
1
2
3
4
5
6
7
 ID USER    FREUND
 1  1   2
 2  1   3
 3  2   1
 4  2   4
 5  3   1
 6  4   2
Tabelle STATUS  
HTML
1
2
3
4
5
 ID USER    TEXT
 1  1   Bla bla bla...
 2  1   Noch was...
 3  3   Huiuiui...
 3  4   Irgendwas...

Wie gesagt möchte jetzt erreichen das User "1" die Statusnachrichten all seiner Frunde, inklusive seiner eigenen sehen kann.

Wie müsste denn jetzt dazu der SQL Statement aussehen? Komme da irgendwie nicht auf einen grünen Zweig...

Ich hatte erst gedacht irgendwas in die Richtung:

 
sql
1
2
3
 SELECT * FROM USER,FREUNDE,STATUS 
    WHERE
 USER.ID = FREUNDE.FREUND AND USER.ID = STATUS.USER

So bekomme ich ja schonmal die Userdaten und Statusnachrichten kombiniert diese werden auch richtig ausgegeben. Das Problem ist aber das er jetzt einige doppelt zeigt und auch Mitteilungen von "nicht Freunden"...

Hab da grad irgendwie ne Denkblokade :-(

Hat jemand von euch vielleicht n Tip mich in die richtige Richtung zu lenken?

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Nocke1984 Nocke1984, am Freitag den 20.08.2010 um 21:50:26

ok bin schon etwas weiter gekommen, mein Statement sieht jetzt so aus:

 
sql
1
2
3
4
5
  SELECT * FROM USER,FREUNDE,STATUS 
    WHERE
 USER.ID = FREUNDE.FREUND AND USER.ID = STATUS.USER
    AND
 FREUNDE.USER = '$user_id'

Das bewirkt nun das alle Statusnachrichten richtig angezeigt werden, allerdings fehlen dabei noch die eigenen Nachrichten und da komme ich nicht weiter, bzw ich hab keine Ahnung wie ich das in diese Abfrage mit einbauen soll...

Jemand n Tip für mich?

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Fabian "q-rios" Krause-Willenberg Fabian "q-rios" Krause-Willenberg, am Freitag den 20.08.2010 um 21:52:29
 
sql
1
SELECT s.* FROM freunde f JOIN status s ON s.user = f.freund WHERE f.user = 1 OR s.user = 1 GROUP BY s.id
Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Nocke1984 Nocke1984, am Samstag den 21.08.2010 um 23:42:57

Wenn ich das so mache dann zeigt er mir jeden Eintrag mehrmals an aber immer mit nem anderen Usernamen, dann sieht das ganze so aus:

Hans: bla bla bla

Peter: bla bla bla

Hans: eins zwei drei

Peter: eins zwei drei

und so weiter...

Wie schon geschrieben mit diesem Ansatz komme ich schon mal soweit das alle Beiträge angezeigt werden außer die eigenen:

 
sql
1
2
3
4
5
   SELECT * FROM USER,FREUNDE,STATUS 
    WHERE
 USER.ID = FREUNDE.FREUND AND USER.ID = STATUS.USER
    AND
 FREUNDE.USER = '$user_id'

Da fehlen jetzt halt noch die eigenen Beiträge und da komme ich nicht weiter das dort einzubauen...

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Fabian "q-rios" Krause-Willenberg Fabian "q-rios" Krause-Willenberg, am Sonntag den 22.08.2010 um 01:04:51

Komisch, geht bei mir einwandfrei. Hab extra die Tabellen bei mir angelegt...

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Nocke1984 Nocke1984, am Sonntag den 22.08.2010 um 01:09:59

Hm ich habs mit copy & paste von dir übernommen und habe das Ergebnis wie oben beschrieben bekommen. Ich schau morgen noch mal nach ob ich evt was vergessen habe oder so...

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Nocke1984 Nocke1984, am Sonntag den 22.08.2010 um 02:10:35

Sooo habs hinbekommen...

So funktioniert es jetzt wie es soll:

 
sql
1
2
3
4
SELECT * FROM status,user,freunde 
WHERE user.USERID = freunde.FREUND AND user.USERID = status.ABSENDER AND freunde.USER = '".$userid."' 
OR user.USERID = '".$userid."' AND status.ABSENDER = '".$userid."' AND freunde.USER = 1
ORDER by status.ID DESC

Ich danke dir für deine Hilfe :-)

Link zur Antwort auf "SQL Statement für Abfrage von mehreren Tabellen?" von Fabian "q-rios" Krause-Willenberg Fabian "q-rios" Krause-Willenberg, am Sonntag den 22.08.2010 um 13:38:01

Habs gerade nochmal bei mir getestet: