プロパティを選択してマッピングテーブルに結合し、場所、宛先、プロパティタイプなどのフィルターにマッピングします。
私の目標は、すべてのプロパティを取得してからそれらをテーブルに左結合し、基本的にすべての場所、プロパティがアタッチされている宛先、およびプロパティタイプ自体を示すデータを取得することです。
これが私の質問です:
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