2017-11-19 8 views
0

"sqllite3"을 배우기 시작했습니다. 알아낼 수없는 문제에 직면했습니다.내부 ID 테이블에 2 열의 2 개의 테이블을 결합하십시오

나는이 테이블

Schema

을하고 난 각 승객의 다음 날짜를 선택합니다 : 이름, 성별, 나이, 티켓, 요금, 원산지 포트 및 대상 포트를. 그러나 출발지 및 목적지 포트에서 번호가 아닌 포트 이름을 표시하고 싶습니다. 포트를 제외한 모든 데이터를 표시하도록 관리했지만 별칭을 사용해야하지만 어떻게해야할지 모릅니다. 누구든지 도와 드릴 수 있습니까?

select Passengers.Passengerid as "PassengerId", Classes.Class_Name as 
"Passenger_Class", Passengers.Name, Passengers.Sex,Passengers.Age, 
Travels.Ticket,Travels.Fare, Ports.Port_ID as "Embarked",Ports.Port_ID as 
"Destination" from Passengers 
inner join Travels on Passengers.Passengerid = Travels.Passengerid 
inner join Travel_Options on Travels.Travel_ID = Travel_Options.Travel_ID 
inner join Ports on Travel_Options.Origin_Port_ID = Ports.Port_ID 
inner join Ports on Travel_Options.Destination_ID = Ports.Port_ID 
inner join Classes on Travel_Options.Class_ID = Classes.Class_ID; 
+0

이 내부 포트는 p2'과 같이'p2'를 사용하여 가입 내부 p1'와'포트에 가입 '과 같은 동일한 이름을 가진 테이블에 다른 별명을 제공 : 사실, 나는 모든 당신의 테이블 에 대한 테이블 별칭을 추천 할 것입니다 'p1.Ports.Port_ID' 열에 대한 테이블 이름이면'p2.whatevercolumn' –

+0

'Travel_Options.Origin_Port_ID = Ports.Port_ID' becames'Travel_Options.Origin_Port_ID = p1.Port_ID' ... –

답변

2

테이블에 별도의 별칭이 필요합니다.

select p.Passengerid, c.Class_Name as Passenger_Class, 
     p.Name, p.Sex, p.Age, 
     t.Ticket, t.Fare, po.port_name as Embarked, pd.port_name as Destination 
from Passengers p inner join 
    Travels t 
    on p.Passengerid = t.Passengerid inner join 
    Travel_Options o 
    on t.Travel_ID = o.Travel_ID inner join 
    Ports po 
    on o.Origin_Port_ID = po.Port_ID inner join 
    Ports pd 
    on o.Destination_ID = pd.Port_ID inner join 
    Classes c 
    on o.Class_ID = c.Class_ID;