在MYSQL中连接多个表不会返回任何内容

时间:2016-05-19 18:17:23

标签: mysql

所以我有一个名为db_computer的表。在此表中有列,例如Id,CPU,Geheugen。

我还有另外两张桌子:CPU,Geheugen。他们每个人都有一个列Id和Naam。

我想要做的是将正确的CPU或Geheugen的Id放在我的db_computer中,以便我可以使用内部联接创建一个SELECT语句来获取与这两个列的Id匹配的名称。

SELECT pc.Id, c.Naam, mem.Naam From db_computer as pc
inner join cpu as c on c.Id = pc.CPU
inner join geheugen as mem on mem.Id = pc.Geheugen
where pc.id = 1;

但我没有得到任何回报。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您的自动递增ID未匹配。在您的查询中,您有where pc.id=1,但由于您的pc表格有auto_increment=2,因此pc中的第一条记录的ID为2,因为不存在任何记录pc.id=1

同样,让我们​​看看以下查询:

SELECT pc.Id, c.Naam FROM db_computer as pc
inner join cpu as c on c.Id = pc.CPU
where pc.id = 1;

这是您查询的简化版本。在cpu表中,您有auto-increment=4,因此您的第一条记录有id = 4。因此,当您尝试加入c.Id = pc.CPU时,自c.Id=4pc.CPU=1后未返回任何内容。对于mem上的内部联接,情况也是如此。

除非您有特殊原因为每个表设置不同的自动增量,否则解决此问题的简单方法是让所有表具有相同的auth-increment值。当我在架构中将所有自动增量设置为1时,您的查询将返回您想要的答案。

希望这有帮助。