我想显示以下信息 -
日期航班|姓名出发时间|商务舱可用性|行政级可用性|经济舱可用性
现在所有信息都在不同的表格中
Table sector - sectorID | description | weekday1 | weekday2 | bfare | xfare | efare
Table flights - flightno | deptime | arrtime | aircrafttypeID | sectorID
Table aircraft - aircraftTypeID | description | bseats | xseats | eseats
scheduleID - flightno | flightdate | bcsavailable | xcsavailable | ecsavailable
QUERY :显示计划于2013年6月17日从加尔各答飞往艾哈迈达巴德的航班,并开始上课。
第1部分 - 我正试图获得座位数大于0且来源和目的地匹配的航班号, 第2部分 - 然后我将从其日期和航班号匹配的scheduledflights表中获取这些记录。 当我在MySQL查询窗口中运行此查询时,我得到了正确的输出,但是当我在Java中执行相同的查询时,它给了我一个错误 -
列索引超出范围,2> 1。
SQL版
SELECT flightno
FROM flights
WHERE aircrafttypeID
IN (
SELECT aircraftTypeID
FROM aircraft
WHERE aircrafttypeID
IN (
SELECT aircrafttypeID
FROM sector, flights
WHERE source LIKE 'Kolkata'
AND destination LIKE 'Ahmedabad'
AND sector.sectorID = flights.sectorID
)
AND bseats >0)
上述查询的输出是FJA23和FJA24 2记录是正确的。
Java版
String origin=jComboBox3.getSelectedItem().toString();
String target=jComboBox4.getSelectedItem().toString();
String fclass=jComboBox1.getSelectedItem().toString();
String search = "";
if(fclass.equals("Business"))
{
search="AND bseats>0";
}
if(fclass.equals("Executive"))
{
search="AND xseats>0";
}
if(fclass.equals("Economy"))
{
search="AND eseats>0";
}
String sql="SELECT flightno FROM flights WHERE aircrafttypeID IN "
+ "(SELECT aircraft.aircrafttypeID FROM aircraft WHERE aircrafttypeID IN "
+ "(SELECT aircrafttypeID FROM sector,flights WHERE source LIKE '"+ origin
+ "' AND destination LIKE '" + target + "' AND sector.sectorID=flights.sectorID) " + search+")";
System.out.println(sql);
答案 0 :(得分:0)
我从@Home得到了一个小小的暗示,向我展示了闪耀的光芒。当我看到printstack时,它显示了我的这部分代码
while(rs.next())
{
String var1=rs.getString(1);
//String var2=rs.getString(2);
//String var3=Integer.toString(rs.getInt(3));
//String var4=Integer.toString(rs.getInt(4));
//String var5=Integer.toString(rs.getInt(5));
//System.out.println(var1+" " + var2+" "+var3+" "+var4+" "+var5);
System.out.println(var1);
}
抛出异常,因为我试图从结果集
中获得的多于1的数据感谢大家调查我的问题。 但我仍然困惑如何从不同的表中获取数据。我是否需要来自每个列数据的多个查询。
答案 1 :(得分:0)
因为您只选择一列而且 您的异常表示您正在引用列索引> 1(..可能您正在执行此resultSet.getXXX(2)。)
答案 2 :(得分:0)
很好,你已经找到了代码中的错误。至于从多个表中获取数据,我在我的java代码中使用以下类型的SQL。
选择a.col1,b.col2,c.col3
从table1作为a,table2作为b,table3作为c
其中a.col1 ='abc'和b.col2在1和100之间;
希望它有所帮助。所有最好的欢呼...... !!