Jetzt Mitglied werden
Kostenlos registrieren und die vielen Vorteile der Webmasterpro-Mitgliedschaft nutzen.
Forum - Entwicklung
- Markup (HTML, XML, etc.) und CSS
- Skriptsprachen (PHP, Javascript, etc.)
- Datenbanken (SQL)
- CMS und Frameworks
- Flash und ActionScript
Info: Der Stern signalisiert, dass neue Beiträge vorhanden sind.
Alle Foren - Übersicht
Portal aktuelle Themen
Design aktuelle Themen
Server aktuelle Themen
- Webhosting und Webspace
- Betriebssysteme (Windows, Linux, etc.)
- Serveradministration
- Überwachung, Sicherheit und Backups
Management aktuelle Themen
Ü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?
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:
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 ...
|
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
|
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:
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?
ok bin schon etwas weiter gekommen, mein Statement sieht jetzt so aus:
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?
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
|
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:
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...
Komisch, geht bei mir einwandfrei. Hab extra die Tabellen bei mir angelegt...
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...
Sooo habs hinbekommen...
So funktioniert es jetzt wie es soll:
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 :-)
Habs gerade nochmal bei mir getestet:



