2017-02-15 8 views
2

Привет поэтому у меня вопрос как такMySQl запроса, который с временной толерантности

SELECT 
meteor_events.event_id AS event_id, 
meteor_events.user_ID AS user_ID, 
meteor_events.date AS date, 
meteor_events.Time 
from `meteor_events` 

может быть несколько событий для заданной даты т.е.

37775 2 2017-01-01 00:01:23 
33500 1 2017-01-01 01:07:56 
37776 2 2017-01-01 01:08:45 
47827 3 2017-01-01 01:08:30 
37777 2 2017-01-03 01:09:44 

Я хочу, чтобы обновить запрос таким образом это возвращает записи, где

1 - даты соответствия и 2 - времена совпадают, но с допуском 30 секунд либо образом

поэтому в данном примере это будет возвращать

37776 2 2017-01-01 01:08:45 
47827 3 2017-01-01 01:08:30 

Im просто не уверен, что должны были начать?

John B

+0

См http://meta.stackoverflow.com/questions/333952/why -should-i-обеспечить-mcve-for-what-seem-to-me-to-be-a-very-simple-sql-query – Strawberry

ответ

1

Возможно проще, если объединить данные и время столбцы как один. Также следует избегать использования ключевых слов SQL в качестве имени столбца

И вам нужно автообъединение для выполнения этой задачи:

SELECT a.event_id, a.user_ID, a.`date`, a.`Time` 
FROM meteor_events AS a 
JOIN meteor_events AS b 
WHERE a.event_id != b.event_id 
AND a.`date` = b.`date` 
AND time_to_sec(a.`Time`) - time_to_sec(b.`Time`) BETWEEN -30 AND 30; 

enter image description here

+0

SIDU работает хорошо, это было довольно медленно, поэтому я добавил индекс к столбцы даты и времени, а не скорость, не являются проблемой - ее нужно немного обновить. Если у пользователя 3, например, есть 2 подходящие даты и 2 раза в течение + или - 30 секунд, эти результаты возвращаются также, каждое пользовательское событие уникально, и пользователь 3 может иметь несколько событий, разделенных только несколькими секундами, но они являются уникальными событиями, I только хотите, чтобы запрос возвращал соответствующие события от других пользователей - надеюсь, что это имеет смысл? –

+0

В этом случае добавьте это: AND a.user_ID! = B.user_ID – SIDU

+0

«Также избегайте использования ключевых слов SQL в качестве имени столбца» - Теперь скажите мне, почему? У меня есть символ «' ». И это НЕ делает слишком долго мои запросы – ad4s

 Смежные вопросы

  • Нет связанных вопросов^_^