我有以下表格:
Products:
id, name, ...
Products_in_Categories
id, category_id, product_id
Categories
id, name, ...
我有一个管理页面,我希望让他按名称,目录ID等搜索产品。当然还有类别和名称以及目录ID ......
所以没有类别 - 这真的很容易。但是,当我希望搜索能够仅提取与所选类别相关的产品信息时 - 我无法弄明白。
我使用的是一些旧方法还是存储方式?我知道并使用了序列化和反序列化,但我不想在这里使用它。
非常感谢任何帮助,谢谢!
答案 0 :(得分:1)
存储产品的方式没有任何问题,这三个表是存储这种关系的正确方法。
SELECT *
FROM Categories c
JOIN Products_in_Categories pic ON ( pic.category_id = c.category_id )
JOIN Products p ON ( p.id = pic.product_id )
WHERE c.name = 'YOUR_CATEGORY_NAME';
将YOUR_CATEGORY_NAME
替换为您搜索的类别名称。如果您希望用户只能输入名称的一部分,请将<{1}}替换为
WHERE c.name = 'YOUR_CATEGORY_NAME';
答案 1 :(得分:0)
SELECT p.* FROM products as p
LEFT JOIN Products_in_Cateogries pc ON pc.product_id = p.id,
LEFT JOIN Categories c ON c.id = pc.categroy_id
WHERE c.name = 'CATEGORY A'
您还不需要在Products_in_Categories表中拥有ID,因为category_id和product_id的组合是唯一的。