我有两张桌子。 :机场,FlightSchedule。
他们彼此有一两对多的关系。
下面是hibernate数据文件。
Airport.java:
public class Airport implements java.io.Serializable {
private Integer airportId;
private String airportName;
private String airportCountry;
private String airportCity;
private Set<FlightSchedule> depFlightSchedule = new HashSet<FlightSchedule>(0);
private Set<FlightSchedule> arrFlightSchedule = new HashSet<FlightSchedule>(0);
}
FlightSchedule.java:
public class FlightSchedule implements java.io.Serializable {
private Integer flightscheduleId;
private Date depDay;
private Date depTime;
private Date arrDay;
private Date arrTime;
private Double flightTime;
private Integer price;
private Set<BoardingPass> boardingPasses = new HashSet<BoardingPass>(0);
private Airplane airplane;
private Airport depAirport;
private Airport arrAirport;
}
在FlightSchedule,他们必须与机场有两个关系。因为他们需要“出发机场信息”和“到达机场信息”。
所以,如果我得到两个字符串输入(出发机场名称,到达机场名称),我想制作连接表(FlightSchedule X Airport)并打印所有信息。
例如,如果我有两个输入'Korea'和'Austrailia',那么我想打印有关离境韩国,到达Austrailia的信息。
喜欢这个! :
departureDate | departureAirport |到达日期|到达机场
2017-12-01 |仁川国际机场| 2017-12-10 |悉尼国际机场
- 出发日期,到达日期来自'FlightSchedule'表。
- departureAirport名称,arrivalAirport名称来自'Airport'表。
实际上,我在mysql上试过这个:
SELECT * FROM flight_schedule as f
内部加入机场
在f.dep_airport_id =(从机场选择机场,其中airport.country ='韩国')
和f.arr_airport_id =(从机场选择机场,其中airport.country ='Austrailia')
但这不是我想要的。
有什么解决方案吗?
答案 0 :(得分:0)
现在您想要在机场与机场同时具有两个不同值的条件下执行联接,因此这是不可能的。对于每种情况,您必须为此表进行两次连接。
SELECT * FROM flight_schedule as f
inner join airport a1
on f.dep_airport_id=(select id from airport where a1.country='korea')
inner join airport a2
on f.arr_airport_id=(select id from airport where a2.country='Austrailia')