Как правильно написать это заявление об обновлении? - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь написать процедуру для обновления двух таблиц, но я немного застрял в синтаксисе.

Таблицы названы SupportTicketsTbl и tblSupportEvent, связь между этими таблицами - третья таблица с именемtblTicketsInEvents.

tblSupportEvent содержит список всех событий в расписании лиц, каждое событие имеет время начала и окончания, эта процедура выполняется как задание sql и проверяет, больше ли текущее времячем время окончания события, и если это так, он обновляет свой статус.

Теперь синтаксис для этого прост:

UPDATE 
    tblSupportEvent
SET 
    [status] = 3 
WHERE 
    eventend < CURRENT_TIMESTAMP
AND
    [status] = 1

Теперь вот моя проблема, событие связано с заявкойпоэтому, когда событие, связанное с заявкой, истекает, я хочу установить для билетов, присвоенных значение, значение 0. 0. 1014 *

Этот запрос SELECT показывает взаимосвязь между таблицами:

SELECT 
    *
FROM 
    tblSupportEvent e 
JOIN 
    tblTicketsInEvents tie 
ON 
    e.id = tie.eventID 
JOIN 
    SupportTicketsTbl t 
ON 
    t.TicketID = tie.ticketID 

Чтобы решить эту проблему, я могу выбрать все идентификаторы билетов с истекшим сроком действия в таблице, а затем обновить SupportTicketsTbl, где идентификатор билета находится в моей табличной переменной, хотя это выглядит немного грязно.Есть ли лучший способ сделать это с помощью оператора обновления / объединений и т. Д.?

Я спрашиваю, потому что, хотя я могу решить проблему самостоятельно, и он, вероятно, будет работать достаточно быстро, чтобы узнать правильный способ сделать это.

Спасибо

1 Ответ

3 голосов
/ 25 ноября 2011

Я полагаю, что это будет лучше, чем создание временной таблицы.

UPDATE SupportTicketsTbl
SET toUpdate = newVal
WHERE
    ticketID IN (
        SELECT id
        FROM tblSupportEvent
        WHERE expiredCondition
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...