Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 联接查询有问题_Mysql_Join - Fatal编程技术网

Mysql 联接查询有问题

Mysql 联接查询有问题,mysql,join,Mysql,Join,其中p.category将从product info表中返回(1,2,3,4,5),其中包含类别的id 现在我需要T3[product Id]使用的类别名称,但我只得到第一个类别名称。您的基本查询如下所示 SELECT * FROM productinfo as p , category as c WHERE c.id IN (p.category) AND p.pid='T3' 现在你需要按产品分类。这是一种多对一关系,因此

其中p.category将从product info表中返回(1,2,3,4,5),其中包含类别的id


现在我需要T3[product Id]使用的类别名称,但我只得到第一个类别名称。

您的基本查询如下所示

SELECT *
FROM 
        productinfo as p ,
        category as c
WHERE
        c.id IN (p.category) AND 
        p.pid='T3'
现在你需要按产品分类。这是一种多对一关系,因此需要左连接

SELECT * FROM productinfo as p WHERE p.pid = 'T3';
您需要学习不同类型的联接以及如何使用它们。每当我看到有人使用“来自表1,表2”时,90%的时候这意味着他们不理解连接,他们需要一个左连接

根据您的评论进行编辑


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

p类别包含此格式的类别表id 1,2,3,4
SELECT * FROM productinfo as p 
LEFT JOIN category as c ON c.id = p.category
WHERE p.id = 'T3'