Datensätze in SQL-Abfrage sortieren
UndSo
- datenbank
0 undso0 Frank (no reg)
Hallo Forum, eine kleine Frage.
Unsere Mitglieder können sich Freundschaftsanträge auf unserer Seite stellen.
Bisher hatte ich das so gemacht, dass in der DB zwei Zeilene erzeugt wurden.
Tabelle: Freunde
userid freundid kat_u kat_f
10 12 0 0
12 10 0 0
10 11 0 0
11 10 0 0
Anschließend hatte ich (als Mitglied:10) so eine ähnliche Query:
select friendid, kat_f from Freunde where userid=10;
Die Daten habe ich in eine Array rein und per While-Schleife ausgegeben.
Wenn ich nun daraus eine Zeile mache:
userid freundid kat_u kat_f
10 12 0 0
11 10 0 0
Würde die Query wie folgt aussehen:
select friendid, kat_f from Freunde where userid=10 OR friendid=10;
Mein Problem ist nun, dass ich in dem Datensatz meine eigene friendid bei Mitglied:11 erhalte, somit kann ich nicht korrekt verlinken.
Könnte man das irgendwie in die Query einbauen, dass er Spalte friendid holen soll, wenn nicht meine ID (10) dort eingetragen ist, ansonsten soll der die Spalte userid abfragen.
Grüße
Bzw. ich merke gerade, dass ich für die Freundetabelle eine Join-Tabelle habe, um mit der Userid von einer anderen Tabellen dern Usernamen vom Freund zu ermitteln.
Am besten, ich lasse alles beim alten und Füge bei einer Freudnschaft immer zwei Zeilen ein oder?
Grüße
Das klingt sinnig, auch wenn ich dir nicht wirklcih ganz folgen konnte.
2 Zeilen ermoeglichen es mir jemanden auf meiner freindlist zu haben, ohne auf seiner zu sein. (Falls ich dich da richtig verstanden habe)
Ja, so werde ich es dann auch am besten machen.
Grüße
Hallo,
du möchstest eventuell ein UNION benutzen, der einmal
userid = userid ausgibt und einmal userid = freundid?
Dann verwende doch am besten ein UNION
SELECT
userid, freundid, kat_u, kat_f
FROM Freunde
UNION
SELECT
freundid, userid, kat_f, kat_u
FROM Freunde
Das ergibt dann
userid freundid kat_u kat_f
10 12 0 0
11 10 0 0
12 10 0 0
10 11 0 0
Wenn du angenommen bereits auch folgende Daten gespeichert hättest
27 28 0 0
28 27 0 0
Dann bekommst du diese nicht doppelt, da UNION für gewöhnlich einen DISTINCT macht (anders als UNION ALL). Das liest du aber im Handbuch deines Datenbanksystems nach.
Ciao, Frank