连接查询的问题

时间:2011-05-04 10:14:49

标签: mysql join

SELECT *
FROM 
        productinfo as p ,
        category as c
WHERE
        c.id IN (p.category) AND 
        p.pid='T3'

WHERE p.category将从产品信息表中返回(1,2,3,4,5)该类别的ID。

现在我需要用于T3 [产品ID]的类别名称,但我只获得第一个类别名称。

1 个答案:

答案 0 :(得分:0)

您的基本查询如下

SELECT * FROM productinfo as p WHERE p.pid = 'T3';

现在您需要为每个产品提供类别。这是多对一的关系,所以你需要一个LEFT JOIN。

SELECT * FROM productinfo as p 
LEFT JOIN category as c ON c.id = p.category
WHERE p.id = 'T3'

您需要了解不同类型的连接以及它们的使用方式。每当我看到有人使用'FROM table1,table2'时,90%的时间意味着他们不理解连接,而是需要LEFT JOIN。

根据您的评论进行修改

您的数据模型存在缺陷。由于产品可以包含多个类别,因此这实际上是多对多关系。您应该创建一个product_category表,将产品ID与类别ID连接起来。