2014-01-29 109 views
1

我想從3個表選擇與INNER JOIN:sqlite3的INNER JOIN有3個表

的表格:

CREATE TABLE tracks (
'track_id' INTEGER PRIMARY KEY NOT NULL, 
'name' TEXT NOT NULL, 
'length' REAL DEFAULT '0.00', 
'city' TEXT 
); 

CREATE TABLE heats (
'heat_id' INTEGER PRIMARY KEY NOT NULL, 
'track_id' INTEGER UNSIGNED NOT NULL, 
'heat_pos' INTEGER UNSIGNED NOT NULL, 
'day_pos' INTEGER UNSIGNED NOT NULL, 
'type' TEXT NOT NULL DEFAULT 'training', 
'average' REAL, 
'date' TEXT, 
'comment' TEXT, 
FOREIGN KEY ('track_id') REFERENCES tracks ('track_id') 
); 

CREATE TABLE laps (
'lap_id' INTEGER PRIMARY KEY NOT NULL, 
'heat_id' INTEGER UNSIGNED NOT NULL, 
'laptime' REAL UNSIGNED NOT NULL, 
FOREIGN KEY ('heat_id') REFERENCES heats ('heat_id') 
); 

當選擇信息從2表(圈和加熱),它的工作原理像我預期:

select 
laps.lap_id, 
laps.laptime, 
heats.heat_pos 
from laps 
inner join heats on laps.heat_id = heats.heat_id; 

但現在我要選擇從軌道表中相應tracknames:

select 
laps.lap_id, 
laps.laptime, 
heats.heat_pos, 
tracks.name 
from laps, tracks, heats 
inner join heats on laps.heat_id = heats.heat_id and 
inner join heats on tracks.track_id = heats.track_id; 

這給了我下面的錯誤:

ambiguous column name: heats.heat_pos

我徹底輸了,但我有一種感覺,它只是一個小錯誤。 任何人都知道我在做什麼錯?

回答

1
select 
laps.lap_id, 
laps.laptime, 
heats.heat_pos, 
tracks.name 
from laps 
inner join heats on laps.heat_id = heats.heat_id 
inner join tracks on tracks.track_id = heats.track_id; 
+0

謝謝,這是exectly什麼,我一直在尋找。我感謝:) – mwolf

-1
select 
laps.lap_id, 
laps.laptime, 
heats.heat_pos, 
tracks.name 
from laps 
inner join heats on laps.heat_id = heats.heat_id 
inner join heats on tracks.track_id = heats.track_id 
ORDER BY laps.lap_id 
+0

'錯誤:模棱兩可的列名:heats.heat_pos' –