/ / Komplexe SQLite-Abfrage, wie lautet die korrekte Syntax? - Sqlite

Komplexe SQL-Abfrage, was ist die korrekte Syntax? - Sqlite

Die Abfrage lautet wie folgt:

SELECT FriendID FROM Relationships WHERE UserID = 1
INTERSECT
(SELECT FriendID FROM Relationships WHERE UserID = 2
UNION SELECT UserID FROM Relationships WHERE FriendID = 2)

(Für die neugierigen Leser ist zu beachten, dass die Freundschaftsbeziehung in diesem Szenario nicht unbedingt symmetrisch ist.)

Ich habe alle möglichen Kombinationen von Klammern ohne Glück ausprobiert.

Wenn ich die Klammern weglasse, gibt es keinen OperatorVorrang in dem Sinne, dass es wie 5 + 6 * 3 = 33 liest. Wenn ich also die Vereinigung vor die Kreuzung setze, funktioniert die Abfrage einwandfrei. Aber was mache ich, wenn ich zwei Gewerkschaften treffen muss?

Antworten:

0 für die Antwort № 1

In diesem Fall können Sie temporäre Tabellen verwenden.


0 für die Antwort № 2

Dank an Larry Lustig (was auf mich zeigte Dies) Habe ich meine Anfrage wie folgt umgeschrieben

SELECT FriendID FROM Relationships WHERE UserID = 1
INTERSECT SELECT ID FROM
(SELECT FriendID AS ID FROM Relationships WHERE UserID = 2
UNION SELECT UserID AS ID FROM Relationships WHERE FriendID = 2)

Und es funktioniert.