簡體   English   中英

多對多對mysql查詢

[英]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_idcategory_idsubcategory_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 IDProductsSubCategory category ID ,只需更改WHERE子句,例如:

WHERE C.cat_id = ValueForCategoryIDhere

要獲取給定子Subcategory IDProductsCategory ,只需更改WHERE子句,例如:

WHERE S.subcat_id = ValueForSubCategoryIDhere

將每個產品的類別放入數組中,序列化數組,然后將其存儲在數據庫中...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM