2016-08-22 5 views
-1

У меня есть следующие таблицы:UPDATE после INNER JOIN

Table1:

id name race_type  start_time    end_time 
--- ---- ---------  ----------    -------- 
111 Phelps Relay  2016-08-20 00:01:00   NULL 
111 Phelps Relay    NULL    2016-08-20 00:02:00 
333 Lochte Butterfly 2016-08-20 00:05:00   NULL 
333 Lochte Butterfly   NULL    2016-08-20 00:06:00 

Table2:

name  race_type  current_time  qualifies 
----  ---------  ------------  --------- 
Phelps  Relay  2016-08-20 00:03:30  
Lochte Butterfly  2016-08-20 00:05:30 

Я использую следующий запрос, чтобы определить, является ли CURRENT_TIME для двух сделки в таблице 2, попадает в START_TIME и END_TIME из таблиц 1 записей в отношении каждого уникального спаривания идентификатора, имени и типа race_type.

SELECT * FROM (
SELECT id,name,race_type, MIN(start_time) AS start_time, MAX(end_time) AS end_time 
FROM Table1 
GROUP BY id 
) AS results INNER JOIN table2 ON 
    results.name = Table2.name 
    AND results.type = Table2.type 
    AND Table2.current_time BETWEEN results.start_time AND results.end_time; 

Как я могу изменить этот запрос, чтобы обновить параметр Table2.qualifies к истинным или ложным в зависимости от того, были результаты возвратилось или нет для двух сделок в Table2

Table2 должен выглядеть следующим образом после модификация:

name  race_type  current_time  qualifies 
----  ---------  ------------  --------- 
Phelps  Relay  2016-08-20 00:03:30  0  
Lochte Butterfly  2016-08-20 00:05:30  1 

Я предполагаю, что мне нужно добавить UPDATE вместе с чем-то где-то?

ответ

0

При вставке/обновлении записей программным образом, необходимо изменить структуру базы данных и сделать это таким образом:

Таблица 1:

id name race_type  start_time   end_time current_time qualifies 
--- ---- ---------  ----------   -------- ----------  ---- 
111 Phelps Relay  2016-08-20 00:01:00  NULL  NULL   null 

выше, будут отправной точкой (при вставке запись в первый раз)

Затем, как только вы получите current time значение в своем коде, запустите запрос обновления и обновите значение столбца current_time этой записи (id 111).

Затем запустите запрос выбора с помощью WHERE и BETWEEN, и в соответствии с вашими условиями обновление также изменит значение столбца.

ПРИМЕЧАНИЕ. Я разместил это как ответ из-за ограничений символов в разделе комментариев. Поэтому, пожалуйста, не делайте ничего. Кроме того, этот ответ показывает правильный и лучший способ структурирования базы данных.

+0

Изменение базы данных не является вариантом. Некоторые из советов, которые помогут ответить на исходный вопрос, были бы приятными, вместо того, чтобы заполнять ценное пространство для ответов. – user3567212

+0

@sumitbadaya Это похоже на вопрос, на который был дан ответ - который немного неудачен с точки зрения OP – Strawberry

+0

Да, на вопрос был дан ответ, но @ user3567212 достаточно слеп, чтобы увидеть его и выбрать код в очень плохом путь. Хорошо, я сожалею о проекте, который находится под его рукой. лол –