Multi-Select Query через систему RETS PHRETS

У меня есть система, запускающая RETS через систему PHRETS. У меня есть форма, которая проходит через запрос, чтобы вытащить результаты, и мы добавляем в многоэкранные поля.

До сих пор мой код выглядел так для запроса: (SUB_AREA_NAME = | AreaA, AreaB, AreaC, AreaD) Это работает для разрешения множества результатов. Проблема заключается в следующем:

По какой-то причине система выполняет операцию "и" вместо операции "или". Поэтому в любое время мы ищем более одного места, если какой-либо из результатов окажется пустым, все они будут пустыми.

Например:

Допустим, у AreaA есть 3 дома. AreaB имеет 0 домов, AreaC имеет 10 домов, а AreaD имеет 1 дом.

Если вы посмотрите: AreaA + AreaC вы получите 13 результатов. AreaA + AreaC + AreaD вы получите 14 результатов. AreaD сам по себе вы получите 1 результат.

AreaA + AreaB вы получите 0 результатов. AreaA + AreaB + AreaC + AreaD вы получите 0 результатов.

В принципе, поскольку AreaB не имеет результатов, если вы запрашиваете эту область с любой другой областью, которая имеет результаты, она все равно будет выглядеть как результат.

Мне нужно знать, как запрашивать множественные выборы из одной категории, показывая все результаты, даже если в одной области нет.

Благодарю.

1 ответ

Некоторые (большинство) реализации сервера Ретса не сделаны правильно. Ваш запрос соответствует требованиям RETS. Вам просто нужно выяснить, что будет работать для вашей конкретной ситуации.

Например, вы можете попробовать ((SUB_AREA_NAME=AreaA)|(SUB_AREA_NAME=AreaB)|(SUB_AREA_NAME=AreaC)|(SUB_AREA_NAME=AreaD)) и посмотреть, работает ли это.

В некоторых случаях я видел эту работу, замечаю, что я удалил трубку, хотя это соединение OR (SUB_AREA_NAME=AreaA,AreaB,AreaC,AreaD)

В других случаях это не будет работать с запятыми, и вам нужно использовать 4 отдельных запроса.

И даже в других случаях я вижу, как сервер затуманивается и не кодирует запятые правильно, поэтому вам нужно сделать что-то вроде этого (SUB_AREA_NAME=|AreaA%2CAreaB%2CAreaC%2CAreaD)

licensed under cc by-sa 3.0 with attribution.