所以我有一个名为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;
但我没有得到任何回报。
提前致谢。
答案 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=4
和pc.CPU=1
后未返回任何内容。对于mem
上的内部联接,情况也是如此。
除非您有特殊原因为每个表设置不同的自动增量,否则解决此问题的简单方法是让所有表具有相同的auth-increment值。当我在架构中将所有自动增量设置为1时,您的查询将返回您想要的答案。
希望这有帮助。