Как я могу использовать IN закрыть дважды? - PullRequest
0 голосов
/ 11 ноября 2018

У меня есть таблица регионов, в которой есть RegionID и координаты.

Таблица регионов: RegionID RegionPolygonCordinates

У меня есть таблица ListingRegion, в которой есть RegionListingID, ListingID и REgionID, который является таблицей «многие ко многим».

Таблица ListingRegion: RegionListingID RegionID ListingID

Сначала мне нужно прочитать идентификаторы регионов по местоположению. Это делается следующим образом:

SELECT REGION_ID FROM region WHERE CONTAINS(REGION_POLYGON, point('45.512573', '-122.661276')

А затем мне нужно получить ListingID для каждого RegionID.

SELECT listings.* FROM listing_region,listings
WHERE  listings.LISTING_ID IN (SELECT listing_region.LIST_REGION_LISTING_ID IN (SELECT listing_region.LIST_REGION_REGION_ID IN (SELECT REGION_ID FROM region WHERE CONTAINS(REGION_POLYGON, point('45.512573', '-122.661276'))))) 

Приведенный выше запрос не работает. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 11 ноября 2018

Это была моя ошибка.

Правильный синтаксис будет следующим:

SELECT listings.* FROM listings
WHERE listings.LISTING_ID IN(SELECT listing_region.LIST_REGION_LISTING_ID FROM listing_region WHERE listing_region.LIST_REGION_REGION_ID IN (SELECT REGION_ID FROM region WHERE CONTAINS(REGION_POLYGON, point('45.512573', '-122.661276'))))
...