2016-05-19 5 views
0

私はdb_computerというテーブルを持っています。この表にはId、CPU、Geheugenのような列があります。MYSQLで複数のテーブルを結合すると何も返されません

私はCPU、Geheugenという2つのテーブルを持っています。それぞれに列IdとNaamがあります。

右のCPUまたはGeheugenのIDをdb_computerに入れて、内部結合を使ってSELECTステートメントを作成して、その2つの列の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の最初のレコードは、pc.id=1というレコードが存在しないため、2のIDを持ちます。

同様に、のは、次のクエリを見てみましょう:

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の内部結合の場合と同じです。

テーブルごとに異なる自動増分を設定する特別な理由がない限り、すべてのテーブルに同じ昇格値を設定するのが簡単な方法です。スキーマ内のすべての自動インクリメントを1に設定すると、クエリから目的の答えが返されます。

これが役に立ちます。

関連する問題