Multi-Table Select
Zeek
- datenbank
0 Bio0 Julian Hofmann
Moin Foren-Gemeinde.
Ich bin gerade dabei ein größeres Projekt zu programmieren, eine Community, um genau zu sein, und habe ein entscheidendes Problem:
Ich habe eine Tabelle für "Freundschaften", die man auf der Community schliessen kann. In dieser Tabelle gibt es 2 Felder von Bedeutung, nämlich "Nickname1" und "Nickname2". Freunde eines Users kann ich finden, indem ich folgende Abfrage tätige:
SELECT Nickname1 FROM freundschaften WHERE Nickname2='Username'
SELECT Nickname2 FROM freundschaften WHERE Nickname1='Username'
Die beiden Ergebnis-Arrays führe ich dann zusammen und habe somit eine Liste aller Freunde.
Jetzt habe ich eine zweite Tabelle, in der die User stehen, die gerade online sind. Unter anderem auch mit ihrem Username. Nun will ich eine Abfrage machen, die mir alle Freunde des Users liefert, die zudem gerade online sind.
Ich könnte es natürlich folgendermaßen machen:
(array freunde beinhaltet die freunde, die ich durch die obigen abfrage erhalten habe)
SELECT Nickname FROM loggeduser WEHERE Nickname=freunde[0] OR Nickname=freunde[1] OR Nickname=freunde[2] OR......
Das ist aber wohl ziemlich unelegant und durch bis zu 100 OR-Statements auch nicht sehr schnell, oder?
Bin für jede Hilfe dankbar!
Zeek
Sup!
SELECT Nickname1 FROM freundschaften WHERE Nickname2='Username'
SELECT Nickname2 FROM freundschaften WHERE Nickname1='Username'
Die beiden Ergebnis-Arrays führe ich dann zusammen und habe somit eine Liste aller Freunde.
Wie wär's mit
select a.nickname
from loggeduser a , (
select nickname1 nickname
from freundschaften
where nickname2='Username'
union
select nickname2
from freundschaften
where nickname1='Username' ) b
where a.nickname = b.nickname;
Das sollte... theoretisch... mit einer Oracle-DB funktionieren.
Gruesse,
Bio
Hallo
SELECT Nickname1 FROM freundschaften WHERE Nickname2='Username'
SELECT a.Nickname FROM loggeduser a, freundschaften b WHERE (b.Nickname1=a.Nickname AND b.Nickname2='Username') OR (b.Nickname2=a.Nickname AND b.Nickname1='Username')
Vielleicht klappt's. Hoffe die Logik umgesetzt zu haben und mySQL-kompartibel zu sein.
Grüße aus Würzburg
Julian