2016-05-19 91 views
0

所以我有一個名爲db_computer的表。在這個表中有列,例如Id,CPU,Geheugen。在MYSQL中連接多個表不會返回任何結果

我有兩個其他表:CPU,Geheugen。他們每個人都有一個專欄Id和Naam。

我想要做的是將正確的CPU或Geheugen的Id放入我的db_computer,這樣我就可以使用內部聯接來創建一個SELECT語句來獲得與這兩個colums的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; 

但我沒有得到任何回報給我。

在此先感謝。

+2

請張貼我們的表中的數據搗鼓 –

+3

我們懇求http://sqlfiddle.com/ –

+0

http://sqlfiddle.com/#!9/564240 –

回答

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增量值。當我在架構中將所有自動增量設置爲1時,您的查詢將返回所需的答案。

希望這會有所幫助。

相關問題