【发布时间】:2015-05-10 09:20:39
【问题描述】:
如何查询我的数据库中routes 表中的route 取决于stops 表中的lat, longi 和arrivaltimes 表中的arrivaltime?因此,如果找到停止表中的纬度和经度,我想首先检查到达时间表中这个stop_id 是否存在到达时间(这里当前时间必须等于到达时间)然后取决于它我想检索所有从此stop_id的路由表中路由?
CREATE TABLE IF NOT EXISTS stops
(stop_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
name varchar(30) NOT NULL,
lat double(10,6) NOT NULL,
longi double(10,6)NOT NULL)
INSERT INTO stops(name, lat, longi) values
('ABC', '63.838039', '18.700440' ),
('DEF', '63.840642', '18.701246' ),
('HIG', '63.868863', '18.665438' )
CREATE TABLE IF NOT EXISTS arrivaltimes(arrivaltimes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
weekday VARCHAR(20) NOT NULL,
arrivaltime time NOT NULL,
stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )
INSERT INTO arrivaltimes(stop_id, arrivaltime, weekday) values
('1', 'mon-fri', '05:30' ),
('1', 'mon-fri', '06:07' )
CREATE TABLE IF NOT EXISTS routes
(routes_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
route INT(11) NOT NULL,
stop_id INT, FOREIGN KEY fk_stop_id(stop_id) REFERENCES stops(stop_id) )
INSERT INTO routes(route) values
('1', '1'),
('1', '9')
JDBC 代码:
Calendar now = Calendar.getInstance();
int day = now.get(Calendar.DAY_OF_WEEK);
int hour = now.get(Calendar.HOUR_OF_DAY);
int minute = now.get(Calendar.MINUTE);
String time = hour+":"+minute;
Statement stt = con.createStatement();
PreparedStatement preparedLatLong = con
.prepareStatement("SELECT lat, longi from stops");
ResultSet rsLatLong = preparedLatLong.executeQuery();
while (rsLatLong.next()) {
double lat_stop = rsLatLong.getDouble("lat");
double lon_stop = rsLatLong.getDouble("longi");
double distStops = haversineDistance(latD, longD, lat_stop, lon_stop);
if(distStops <= 10){
// Here how can I query the arrivaltime and the route?
PreparedStatement preparedTime = con.prepareStatement("SELECT arrivaltime from arrivaltimes WHERE arrivaltime=time"
+ "values(?)");
ResultSet rsArrivaletime = preparedTime.executeQuery();
while(rsArrivaletime.next()){
}
}
}
如果stops 表中的第一条记录是位置,那么我想检查到达时间表中的到达时间,如果当前时间 = 13:30,那么我想获取 1 和 9 路线编号来自routes 表。我希望现在更清楚了。
【问题讨论】:
-
我很难理解你在问什么,但我觉得它归结为“我如何使用连接”。您能否在表格中添加一个数据示例以及您的预期输出?
-
@Mark:我添加了一个截图作为示例,请查看我更新的问题。
-
我想我犯了一个错误,因为每次都有一条路线,我也可以将路线条目添加到到达时间表中