Also muss ich eine Abfrage in SQL schreiben, wo ich die Prominenten auflisten, die in Beziehungen mit dem gleichen Promi gewesen sind. Ich liste hauptsächlich celeb1, celeb2 und celeb3 auf, wo celeb3 in einer Beziehung mit celeb1 und celeb2 war. Hier ist die Abfrage Ich verwende:SQL-Abfrage, wo das Ergebnis doppelte Zeilen hat
SELECT S1.Celeb1, S2.Celeb2, S3.name AS Celeb3
FROM Relationships S1, Relationships S2, Celebs S3
WHERE S3.name = S1.Celeb2
AND S3.name = S2.Celeb1
AND S1.Celeb1 <> S2.Celeb2;
Es ist schwierig zu wissen, ob diese Abfrage korrekt ist, da es mir 200 Zeilen im Ergebnis gibt, aber ich sah ein paar der Reihe und es sieht aus wie es mir geben Korrektes Ergebnis, wenn celeb3 in einer Beziehung mit celeb1 und 2 war. Das Problem ist, dass im Ergebnis doppelte Zeilen vorhanden sind. Dies könnte darauf zurückzuführen sein, dass in der Beziehungstabelle die Beziehung celeb1, celeb2 aufgelistet wird, aber auch die inverse celeb2, celeb1, aufgelistet wird. Wie kann ich verhindern, dass das Ergebnis Duplikate auflistet?
Hier sind die zwei Tabellen, die ich verwende (Beziehungen und Promis).
CREATE TABLE Celebs(
name VARCHAR(30)
);
CREATE TABLE Relationships (
Celeb1 VARCHAR(30),
Celeb2 VARCHAR(30)
);
Tipp von heute: Wechseln Sie zu moderner, expliziter 'JOIN'-Syntax. Einfacher zu schreiben (ohne Fehler), einfacher zu lesen und zu pflegen und einfacher zu Outer Join zu konvertieren, falls erforderlich. – jarlh
Würde dies mir helfen, das Problem zu lösen, das ich habe? –
Nein, aber bringen Sie Ihr SQL-Wissen auf die nächste Stufe! – jarlh