我有兩個表:一個包含產品,第二個包含類別。我希望能夠按類別進行搜索,以便在父類別中搜索時,它將搜索父類別和子類別。搜索類別和子類別
我的目標: 請在「汽車」的搜索將>>雪佛蘭搜索和豐田
我怎樣才能實現這個結果?
mysqli_query($conn,"select * from cat where parent=''");
我有兩個表:一個包含產品,第二個包含類別。我希望能夠按類別進行搜索,以便在父類別中搜索時,它將搜索父類別和子類別。搜索類別和子類別
我的目標: 請在「汽車」的搜索將>>雪佛蘭搜索和豐田
我怎樣才能實現這個結果?
mysqli_query($conn,"select * from cat where parent=''");
既然你沒有表現出你的表結構,我鑼做出一些猜測。我也希望這個答案不是太簡單,但沒有更多的繼續,似乎你正在尋找基本的想法。
假設您的示例中的「cars」在類別表中,「chevrolet」和「toyota」在產品表中,那麼您需要在產品表中指定另一個欄,說明每個產品的類別。
所以如果你有一個類別表所示:
cat_id | cat_name
-----------------
1 | cars
2 | appliances
,你有一個產品表所示:
product_id | product_name | cat_id
----------------------------------
1 | chevrolet | 1
2 | kitchenaid | 2
3 | toyota | 1
重要的是,在產品表中的每個項目都有一個參考類別是什麼。這就是關係數據庫所做的:它們提供了一種顯示不同實體之間關係的方式。
然後得到的所有產品類別中的「車」的列表,你只需要在適當的類別來選擇的:
SELECT product_name from products WHERE cat_id = 1;
如果您還希望包括從類別表信息在你的結果,你可以加入表:
SELECT product_name, cat_name from products
JOIN categories ON products.cat_id = categories.cat_id
WHERE categories.cat_id = 1
這將讓你的結果:
product_name | cat_name
------------------------
chevrolet | cars
toyota | cars
在某些情況下,將類別和產品放在同一個表格中是有意義的(例如,如果您想要具有任意深度值的樹,例如'雪佛蘭'是父'volt','impala'等)。
同樣的查詢仍然有效,但現在你本身加入表(我使用基於下面的評論列名):
SELECT child.name, parent.name
FROM products AS parent
JOIN products AS child ON parent.id = child.parent
WHERE parent.id = 1
這將讓你幾乎相同的結果如上。雖然它是連接到它自己的同一張表,但我使用AS來區分這兩個引用。
親愛的傑裏 我有類別表https://i.stack.imgur.com/f6cI1。png 我需要做搜索引擎,當我在父類別中搜索父類別 –
的子類別時,確定,假設有類別和產品在同一個表中的原因,查詢實際上沒有太大變化。不同之處在於,不是將兩個表連接在一起,而是將自己與表連接起來。我會在我的回答中加入一個快速補充。 – Jerry
親愛的 這項工作選擇的類別,但我想進行選擇和搜索,當我選擇主要類別搜索將運行在此 的所有子類別上我試圖做到這一點,但沒有機會 –
請參閱http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple- sql-query – Strawberry