Задавайте вопросы, мы ответим
Вы не зашли.
Есть поля координаты x,y,время time,дата date, скорость V
Необходимо составить запрос, чтобы находил запись время1,где V1<2, время2 где V2>8 условия чтобы разница (время2-время1)>5мин и (x2-x1)>0.002 и (y2-y1)>0.002, дальше следующая запись но начиная со следующей записи после время 2.
Я составил запрос, но он выдает только один результат на сутки, а нужно все подобные случаи по условию выводить.
SELECT t1.time,t1.date, (IFNULL((SELECT time FROM table2 t2 WHERE t2.date=t1.date AND t2.time>t1.time and t2.V>8 and (t2.x-t1.x)>0.002 and (t2.y-t1.y)>0.002 ORDER BY t2.time limit 1), t1.time))
FROM table1 t1 where t1.V<2 GROUP BY date;
Таблица подобная этой
x y V time date
6055,65 7635,619 1,09 00:11:38 29.3.2008
6055,648 7635,615 1,98 00:11:45 29.3.2008
6055,646 7635,605 5 00:11:51 29.3.2008
6055,646 7635,61 2,54 00:11:56 29.3.2008
6055,647 7635,614 3,13 00:12:01 29.3.2008
6055,647 7635,618 1,93 00:12:06 29.3.2008
6055,648 7635,621 2,11 00:12:11 29.3.2008
6055,648 7635,624 2,06 00:12:16 29.3.2008
6055,649 7635,627 2,72 00:12:21 29.3.2008
6055,649 7635,622 2,94 00:12:25 29.3.2008
6056,399 7634,079 0,37 01:23:59 29.3.2008
6056,385 7634,044 0,02 01:24:04 29.3.2008
6056,384 7634,042 0,07 01:24:10 29.3.2008
6056,384 7634,042 0,09 01:24:13 29.3.2008
6056,385 7634,015 0 01:24:17 29.3.2008
6056,399 7633,953 39,19 01:24:24 29.3.2008
6056,404 7633,874 48,04 01:24:30 29.3.2008
6056,399 7633,776 58,63 01:24:36 29.3.2008
6056,396 7633,683 60,8 01:24:41 29.3.2008
6056,394 7633,596 52,1 01:24:46 29.3.2008
6056,392 7633,528 33,87 01:24:51 29.3.2008
6056,39 7633,496 22,41 01:24:55 29.3.2008
6056,388 7633,473 9,22 01:25:02 29.3.2008
6056,384 7633,439 31,8 01:25:07 29.3.2008
6056,382 7633,393 44,91 01:25:11 29.3.2008
6056,38 7633,287 54,8 01:25:18 29.3.2008
6056,377 7633,217 58,47 01:25:22 29.3.2008
6056,374 7633,13 52,87 01:25:27 29.3.2008
6056,371 7633,056 42,78 01:25:32 29.3.2008
6056,369 7632,998 20,72 01:25:38 29.3.2008
6056,368 7632,98 2,46 01:25:43 29.3.2008
6056,368 7632,979 5,11 01:25:45 29.3.2008
6056,372 7632,947 23,04 01:25:52 29.3.2008
6056,372 7632,914 32,41 01:25:56 29.3.2008
6056,368 7632,835 41,73 01:26:03 29.3.2008
6056,367 7632,77 4 3,73 01:26:08 29.3.2008
6056,365 7632,701 45,04 01:26:13 29.3.2008
6056,363 7632,644 47,26 01:26:17 29.3.2008
6056,362 7632,585 47,99 01:26:21 29.3.2008
6056,359 7632,483 47,45 01:26:28 29.3.2008
6056,357 7632,407 51,69 01:26:33 29.3.2008
6056,355 7632,327 52,23 01:26:38 29.3.2008
6056,352 7632,262 54 01:26:42 29.3.2008
6056,351 7632,176 57,45 01:26:47 29.3.2008
6056,35 7632,07 57,56 01:26:53 29.3.2008
6056,349 7631,982 57,04 01:26:58 29.3.2008
6056,35 7631,899 45,71 01:27:03 29.3.2008
6056,35 7631,861 17,5 01:27:07 29.3.2008
6056,35 7631,854 0,07 01:27:12 29.3.2008
6056,35 7631,854 0,13 01:27:18 29.3.2008
6056,35 7631,854 0,17 01:27:22 29.3.2008
6056,35 7631,854 2,39 01:27:28 29.3.2008
6056,354 7631,841 22,17 01:27:32 29.3.2008
6056,377 7631,83 31,54 01:27:38 29.3.2008
6056,394 7631,832 20,91 01:27:42 29.3.2008
6056,4 7631,831 0,07 01:27:48 29.3.2008
6056,4 7631,832 0,04 01:27:53 29.3.2008
6056,4 7631,832 0,13 01:27:58 29.3.2008
6056,4 7631,832 0,06 01:28:03 29.3.2008
6056,4 7631,832 0,06 01:28:08 29.3.2008
6056,4 7631,832 0,11 01:28:13 29.3.2008
6056,4 7631,832 0,11 01:28:18 29.3.2008
6056,4 7631,832 0,09 01:28:24 29.3.2008
6056,4 7631,832 0,09 01:28:28 29.3.2008
6056,4 7631,832 0,11 01:28:49 29.3.2008
6056,402 7631,832 9,07 01:28:55 29.3.2008
6056,414 7631,827 26,74 01:29:00 29.3.2008
6057,104 7631,797 71,89 01:30:35 29.3.2008
6057,158 7631,8 70,52 01:30:40 29.3.2008
6057,21 7631,804 70,28 01:30:45 29.3.2008
Неактивен
GROUP BY date приводит к тому, что один результат за сутки
Неактивен
Спасибо, сейчас проверю, но как быть с тем, что после получения первой записи time1,date,time2 следущая строка time1 будет браться из диапазона от time1 до time2 т.к. там тоже V<2, т.е. будет повторение со всеми строками от time1 до time2, а надо, чтобы следующая запись искалась из диапазона time2+1 запись. Может я иду не по правильному и рациональному пути т.к. подобные запосы занимают много времени порядка десяток секунд, может стоит оптимизировать базу.
Неактивен
Наверное такие запросы не стоит делать средствами базы. Эту функцию легко реализовать, скажем на PHP. В MySQL останется только вариант внутри хранимой процедуры через курсор
Неактивен
Небольшая просьба, примерчик подобного обращения к базе (я такое уже пробовал делать, но только INSERT в базу). Как составить вышеозначенный запрос в php пусть самы простой , книжки есть сам до ума доведу.
Неактивен
mysql_connect(...);
mysql_select_db('db_name');
$sql = mysql_query("SELECT * FROM tbl ORDER BY id");
$result = mysql_query($sql) or die(mysql_error());
while($aRow = mysql_fetch_assoc($result)) {
здесь в $aRow будет хэш, со значениями из строки, можно проводить обработку в цикле
}
Неактивен
Спасибо
Неактивен