[英]many to many to many mysql query
我正在嘗試創建一個結構化的數據庫,以便可以進行一次查詢並獲取所需的所有數據。
這就是我現在的結構:
Products Subcategory Category
------------- ------------- -------------
| id | name | | id | name | | id | name |
對我而言,創建兩個關系表將產品與子類別相關聯,並將子類別與類別相關聯(使其成為分層結構)是很有意義的:
prod_sub_relation sub_cat_relation
---------------------------- ---------------------------
| id | prod_id | subcat_id | | id | subcat_id | cat_id |
因此該產品可以位於多個子類別中,並且該子類別告訴我們該產品屬於哪個類別。
通過這種結構,如果我想查找所有帶有category_id
的產品,則必須查詢sub_cat_relation
表,然后采用該數組並再次查詢prod_sub_relation
表(這很麻煩)。
我的目標是查找所有具有一個ID(或者是product_id
, category_id
或subcategory_id
)的產品,所有類別或所有子subcategory_id
。
這可能嗎? 還是我在這里做錯了什么?
正如@ har07所提到的,您可以在此應用程序上使用簡單的JOIN
。 我不確定表格結構的其他細節,但是我將根據您到目前為止提供的內容向您展示:
SELECT p.ID, p.Name, c.Name as CategoryName, s.Name as SubCategoryName
FROM Products P
INNER JOIN SubCategory S
ON P.subcat_id = S.subcat_id
INNER JOIN Category C
ON S.cat_id = C.cat_id
然后,您可以使用WHERE
子句指定要顯示的產品及其類別和子類別
SELECT P.ID, P.Name, C.Name as CategoryName, S.Name as SubCategoryName
FROM Products P
INNER JOIN SubCategory S
ON P.subcat_id = S.subcat_id
INNER JOIN Category C
ON S.cat_id = C.cat_id
WHERE P.ID = valuehereforyourID
要獲取給定category ID
的Products
和SubCategory
category ID
,只需更改WHERE
子句,例如:
WHERE C.cat_id = ValueForCategoryIDhere
要獲取給定子Subcategory ID
的Products
和Category
,只需更改WHERE
子句,例如:
WHERE S.subcat_id = ValueForSubCategoryIDhere
將每個產品的類別放入數組中,序列化數組,然后將其存儲在數據庫中...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.