Je sélectionne les propriétés et les joignent aux tables de mappage où elles sont mappées à des filtres tels que l'emplacement, la destination et le type de propriété.Est-ce que j'utilise GROUP_CONCAT correctement?
Mon but est de récupérer toutes les propriétés, puis de les JOINDRE aux tables, puis d'obtenir des données qui montrent tous les emplacements, les destinations auxquelles une propriété est attachée et le type de propriété lui-même.
Voilà ma question:
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
Avant de faire la GROUP BY
et GROUP_CONCAT
mes données ressemble à ceci:
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
Après la GROUP BY
et GROUP_CONCAT
il devient ...
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
Est-ce la façon préférée de gra bbing tous les mappings possibles pour la propriété en une seule fois, avec GROUP_CONCAT
dans un CSV comme ça?
Grâce à ces données, je peux rendre quelque chose comme ...
<div class="property" categories="1" subcategories="2,3">
<h2>{property_name}</h2>
<span>{property_location}</span>
</div>
Utilisez ensuite Javascript pour afficher/cacher en fonction de si l'utilisateur clique sur un point d'ancrage qui a dit, un subcategory="2"
attribut il se cacherait chaque .property
qui n'a pas 2
à l'intérieur de sa valeur d'attribut subcategories
.