2016-12-02 26 views
0

我試圖加入兩個表,但得到「錯誤代碼:1052.字段列表中的列'Flight_no'含糊不清」 。有人可以幫幫我嗎?嘗試加入這些表,但獲得錯誤代碼:1052.字段列表中的列'Flight_no'含糊不清

這裏是我的查詢:

SELECT Flight_no, Airline_code. Lname, Passenger_id 
FROM Ticketinfo JOIN Flights 
ON Ticketinfo.Flight_no = Flights.Flight_no; 

這裏是我的表信息:

CREATE TABLE Flights 
(
    Flight_no INT NOT NULL, 
    Airline_code char (5) NULL, 
    Departure_AirportCode char (5) NOT NULL, 
    Departure_date date NOT NULL, 
    Arrival_AirportCode char (5) Not NULL, 
    Arrival_date date not null, 
    Price decimal (5,2), 
    Airline_no INT NOT NULL, 
    Route_no varchar (8) NOT NULL, 
    PRIMARY KEY (Flight_no), 
    FOREIGN KEY (Airline_no) REFERENCES Airlines(Airline_no), 
    FOREIGN KEY (Route_no) REFERENCES Routes(Route_no) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 


CREATE TABLE TicketInfo 
(
    Confirmation_no varchar (10) NOT NULL, 
    Lname varchar (30) NOT NULL, 
    Passenger_id varchar (6) NOT NULL, 
    Fare_type varchar (3) NOT NULL, 
    Flight_no INT NOT NULL, 
    PRIMARY KEY (Confirmation_no), 
    FOREIGN KEY (Passenger_id) REFERENCES Passenger(Passenger_id), 
    FOREIGN KEY (Flight_no) REFERENCES Flights(Flight_no) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

回答

0

這是不明確的。 Flight_No在兩個表中。

前綴特定的表到現場是這樣的:

SELECT Flights.Flight_no, Airline_code. Lname, Passenger_id 
FROM Ticketinfo JOIN Flights 
ON Ticketinfo.Flight_no = Flights.Flight_no; 
+0

謝謝@ Chizzie - 問題已解決。 – zimara1

0

由於Flight_no柱出現在兩個表中,你需要通過指定解決在選擇歧義你想要的表Flight_no列來從。由於您的加入,兩個表中的值都是相同的,所以您選擇的並不重要。

SELECT Ticketinfo.Flight_no, Airline_code. Lname, Passenger_id 
FROM Ticketinfo JOIN Flights 
ON Ticketinfo.Flight_no = Flights.Flight_no; 
+0

嘿喬 - 感謝您的快速反應。我從另一個帖子看到,這可能是問題所在。所以我去了,並修改了我的代碼,但現在我得到:錯誤代碼:1054.'字段列表'中的未知列'Airline_code.Lname' – zimara1

+0

Nvm喬現在工作!非常感謝! – zimara1

0

資格與任何表名或(我偏好)短表的別名所有列引用。例如:

SELECT f.flight_no 
    , f.airline_code 
    , t.lname 
    , t.passenger_id 
    FROM Ticketinfo t 
    JOIN Flights f 
    ON f.flight_no = t.flight_no 

除了解決「曖昧列」的錯誤,防止工作的語句從時新列添加到表...這也有助於未來人類的讀者突破。如果列引用不合格,讀者不知道該列所在的表,而不去查找表定義。

後來,當名爲lname的列被添加到Flights表中時,查詢不會引發「不明確的列」錯誤。這就是爲什麼我們有資格所有列參考。

+0

@ Spencer ...非常感謝!這工作。我對此很陌生,一直試圖在不知道要尋找什麼的情況下解決它。也感謝解釋。我已經把你的和喬保存到我的小抄表中。 – zimara1

相關問題