2012-03-18 126 views
-2
create table A ( 
    cityID int, 
    cityname nvarchar(30), 
    primary key (cityID) 
) 

create table b (
    travelID int, 
    fromcityID int, 
    tocityID int, 
    primary key (travelID), 
    foreign key (fromcityID) references A (cityID), 
    foreign key (tocityID) references A (cityID) 
) 

insert into A values(1,'amman'); 
insert into A values(2,'Irbid'); 

insert into B values(1,1,1) 
insert into B values(2,1,2) 
insert into B values(3,2,1) 
insert into B values(4,2,2) 



select travelID, a.cityname,a.cityname from A, b where ???? 

我應該在select語句中寫什麼來查看城市名稱而不是它的id?從同一個表中取得兩個外鍵的Sql select語句

+2

您正在使用哪個數據庫?這可能會影響查詢的語法。 – 2012-03-18 08:26:23

+5

我建議學習關於連接的知識。 – Corbin 2012-03-18 08:28:21

回答

3

與下面的查詢嘗試的好去處:

SELECT a.cityname,c.cityname from B b 
JOIN A a ON b.fromcityID=a.cityID 
JOIN A c ON b.tocityID=c.cityID 

我已經使用別名以避免查詢中出現歧義.............

+1

非常感謝:)) – 2012-03-18 08:44:12

+1

你也可以接受答案.... – 2012-03-18 08:45:49

0

請嘗試以下操作。這取決於你使用的數據庫,語法可能會有所不同

select travelID, a1.cityname as city1, a2.cityname as city2 
from B 
inner join A a1 
on a1.cityID = B.fromcityID 
inner join A a2 
on a2.cityID = B.tocityID 

下面就來閱讀了關於加入http://www.w3schools.com/Sql/sql_join.asp

+0

不客氣! – 2012-03-18 08:49:19