Извините, название не может быть более описательным, я до сих пор не знаю названия того, с чем имею дело.
Я разрабатываю поисковую систему для сайта недвижимости, и она работала хорошо, пока я не понял, что забыл принять во внимание, что некоторые из моих полей (которые используются в качестве фильтров на странице поиска) могут иметь несколько значений. Я имею в виду, что у меня было только одно поле для продажи и аренды и одно только одно поле для жилых и коммерческих помещений (другие поля тоже) - проблема в том, что недвижимость могла продаваться или сдаваться в аренду или могла быть жилой, коммерческой. и промышленный.
То, что я думал сделать, это переместить их на их собственный стол. Дело в том, что у меня есть еще одна таблица, в которой перечислены возможные значения для каждого поля, которая используется для отображения имен значений, заполнения форм, использования в качестве ограничений и т. д.
Итак, теперь я застрял с множеством столов.
Таблица для свойств, затем таблицы для значений, затем таблицы, которые присоединяют эти значения к свойствам.
Простой поисковый запрос без фильтров (больше фильтров, больше объединений). У меня 7 внутренних объединений.
Мне очень трудно заставить объединения работать как для ограничения результатов, так и для возврата значений в части SELECT запроса.
Я был бы признателен за любые предложения, так как эта проблема заставила меня умственно устать за последние 2 дня.
ИЗМЕНИТЬ:
На данный момент у меня есть следующие таблицы:
свойства
свойства_изображения
свойства_списки
свойства_параметры
свойства_цели
res_geo_address
res_geo_cities
res_geo_neighborhoods
res_geo_states
res_property_options
res_property_type_age
res_property_type_listing
res_property_type_property
res_property_type_assign
res_property_type_purpose_property
Таблица свойств является основной таблицей свойств и содержит несколько столбцов, описывающих свойство.
Таблицы properties_ используются для соединения таблицы properties и таблиц res_property_ (используя идентификаторы — один для свойства и один для значения) (исключением являются изображения, которые содержат только записи изображений)
В таблицах res_ по большей части перечислены идентификаторы и имена значений. (исключение составляют таблицы res_geo)
На данный момент мои запросы не работают. Честно говоря, я дошел до такой сложности, что мне трудно объяснить мою текущую настройку.
Было бы неплохо, если бы был простой способ запрашивать таблицы с полями, содержащими массивы, и легко извлекать их.
РЕДАКТИРОВАТЬ 2:
На изображении выше показано одно из соединений. Как я могу запросить свойство, всегда извлекать конкат всех связанных с ним имен листинга, но при необходимости ограничивать свойства определенной группой идентификаторов листинга?