/ / Complex sqlite query, какъв е правилният синтаксис? - sqlite

Комплексна заявка за sqlite, какъв е правилният синтаксис? - sqlite

Заявката е тази:

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

(за любознателните читатели, моля, имайте предвид, че връзката с приятели не е задължително симетрична в този сценарий)

Опитах всички възможни комбинации от скоби без късмет.

Ако пропусна скобите, няма операторпредимство в смисъл, че го чете като 5 + 6 * 3 = 33, така че ако сложа обединението преди пресичането, заявката работи добре. Но какво ще правя, когато ще трябва да пресека две съюзи?

Отговори:

0 за отговор № 1

В такъв случай можете да използвате временни таблици.


0 за отговор № 2

Благодарение на Лари Лустиг (което ме посочи това), Пренаписах заявката си по следния начин

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)

И това работи.