Я выбираю свойства и соединяю их с таблицами сопоставления, где они сопоставляются с фильтрами, такими как местоположение, место назначения и тип свойства.
Моя цель состоит в том, чтобы получить все свойства и затем присоединиться к нимтаблицы, а затем в основном получают данные, которые показывают все местоположения, места назначения, к которым прикреплено свойство, и сам тип свойства.
Вот мой запрос:
SELECT p.slug AS property_slug,
p.name AS property_name,
p.founder AS founder,
IF (p.display_city != '', display_city, city) AS city,
d.name AS state,
type
GROUP_CONCAT( CONVERT(subcategories_id, CHAR(8)) ) AS foo,
GROUP_CONCAT( CONVERT(categories_id, CHAR(8)) ) AS bah
FROM properties AS p
LEFT JOIN destinations AS d ON d.id = p.state
LEFT JOIN regions AS r ON d.region_id = r.id
LEFT JOIN properties_subcategories AS sc ON p.id = sc.properties_id
LEFT JOIN categories_subcategories AS c ON c.subcategory_id = sc.subcategories_id
WHERE 1 = 1
AND p.is_active = 1
GROUP BY p.id
Прежде чем я сделаю GROUP BY
и GROUP_CONCAT
мои данные выглядят так:
id name type category_id subcategory_id state
--------------------------------------------------------------------------
1 The Hilton Hotel 1 1 2 7
1 The Hilton Hotel 1 1 3 7
1 The BlaBla Resort 2 2 5 7
После GROUP BY
и GROUP_CONCAT
оно становится ...
id name type category_id subcategory_id state
--------------------------------------------------------------------------
1 The Hilton Hotel 1 1, 1 2, 3 7
1 The BlaBla Resort 2 1 3 7
Является ли это предпочтительным способомзахватить все возможные сопоставления для свойства за один раз, с GROUP_CONCAT
в CSV, как это?
Используя эти данные, я могу сделать что-то вроде ...
<div class="property" categories="1" subcategories="2,3">
<h2>{property_name}</h2>
<span>{property_location}</span>
</div>
Затемиспользуйте Javascript для показа / скрытия, основываясь на том, что если пользователь щелкнет на якоре с атрибутом subcategory="2"
, он будет скрывать каждый .property
, который не имеет 2
внутри своего значения атрибута subcategories
.