我有三个表(MySQL):
families
我定义产品系列products
我定义产品families_products
我关联家庭和产品------------------- -------------------- ------------------------
| familyID | code | | productID | code | | familyID | productID |
|----------|------| |-----------|------| |----------|-----------|
| 1 | p | | 1 | p3 | | 1 | 1 |
| 2 | a | | 2 | a5 | | 1 | 3 |
| 3 | e | | 3 | p1 | | 1 | 6 |
------------------- | 4 | e7 | | 2 | 2 |
| 5 | a2 | | 2 | 5 |
| 6 | p4 | | 3 | 4 |
-------------------- ------------------------
我有两个问题:
families_products
表,将familyID
关系直接放入表products
?familyID
,我该如何检索products->code
?我编写了这个查询,但是如果我删除parents_products表,将familyID关系直接放入表产品中,如前所述,而不是第三个关系表,则可以使用像这样的查询结构。'SELECT productID, code, img
FROM products AS a
INNER JOIN families_products AS b
ON b.productID=a.productID
WHERE b.familyID=' . $families[$key]["familyID"]
答案 0 :(得分:0)
您的数据结构很好。
如果每个产品最多只有一个familyID
,那么您应该将该系列放在products
表中。如果产品可以属于多个系列,则应使用连接表(您的结构)。
至于你的查询,没关系。我会使用更好的表别名:
SELECT p.productID, p.code, ??.img
FROM products p INNER JOIN
families_products fp
ON f.productID = fp.productID
WHERE fp.familyID = ' . $families[$key]["familyID"]
答案 1 :(得分:0)
如果您的产品只属于一个产品系列,则可以跳过" familiy_product"表并将familiy_id直接添加到产品中。只有在产品可以分配给多个系列的情况下,您才需要"加入"表
只有两个表,SQL非常简单:
select p.code from family f, product p where f.code ='xx' and p.family_id = f.id