我試圖找出一個查詢檢索特定產品在類別列表。如何使用joins和group_concat正確檢索產品主要和次要類別?
我有了三個表稱爲類,product_to_sec_cat_assoc和產品數據庫稱爲產品。
+--------------------+ +--------------------+ +--------------------------+
| Products | | categories | | product_to_sec_cat_assoc |
+--------------------+ +--------------------+ +--------------------------+
| product_id | | category_id | | product_id |
| pri_category_id | | category_name | | category_id |
| name | | url_link | +--------------------------+
+--------------------+ +--------------------+
由於並非所有產品都具有次級類別,因此我將其主要類別直接歸入產品條目中。如果他們也在其他次要類別中,我使用名爲product_to_sec_cat_assoc的關聯表來關聯其他類別。
我在編寫查詢時遇到了麻煩,我想在其中創建一個顯示特定類別中所有產品的頁面。每款產品上市也顯示了各種繼發性兩類他們在
我當前的查詢是:
select t.*,
GROUP_CONCAT(c.category_name order by pri_category_id, c.category_id) as category_names,
GROUP_CONCAT(c.url_link) as category_links from products t
left join product_to_sec_category_assoc a using (id)
left join categories c on t.pri_category_id = c.category_id or c.category_id = a.category_id
where t.pri_category_id = 12
or (a.category_id = 12 and a.id = t.id)
group by t.title
出於某種原因,不過,如果我將產品添加到一個以上的次級類,當我查看在其中一個次要類別中的產品,它僅顯示我正在查看的主要類別和次要類別。另一方面,如果我查看主要類別列表,它將顯示主要類別及其所有次要類別。
例如,假設我在電子主類別以及平板電腦和移動次要類別中使用了iPad。如果我訪問電子產品類別列表,它會顯示電子產品,平板電腦,手機中的iPad。如果我進入移動類別,它將顯示在電子,移動。如果我進入Tablet類別,它會在Electronics,Tablet類別中顯示它。
我遇到的另一個問題是,該查詢也沒有正確命令GROUP_CONCAT(category_name)和GROUP_CONCAT(category_link),以便category_names及其鏈接處於匹配順序。
這是完美的。我不知道我想要做的事情會如此複雜,如果沒有你的幫助,我永遠也不會想出來。我和is_primary模型一起工作,工作很棒。真的很感激它。 –