2015-02-16 3 views
1

Вот мой основного запросSQL Регистрация Помощи запросов на MySql

SELECT * from ACTIONS where STARTDATE < '2015-05-01' and EXPORTDATE is null 

мне нужно присоединиться к этому с настольными контрактами и дополнительно включает в себя только записи, где SERIAL одинаковы в обеих таблицах и ENDDATE (в договорах) < '2015-03-01'

После того, как я просмотрю данные, мне нужно сделать запрос на обновление в параметрах ACTIONS, чтобы установить STARTDATE на новую дату для тех же записей.

ответ

4

Джойн для оператора выбора:

SELECT * from ACTIONS 
JOIN Contracts ON Actions.Serial = Contracts.Serial 
WHERE Actions.STARTDATE < '2015-05-01' 
    AND Actions.EXPORTDATE is null 
    AND Contracts.EndDate < '2015-03-01' 

Обновление (с помощью обновления MySQL с присоединиться синтаксис):

UPDATE Actions 
JOIN Contracts ON Actions.Serial = Contracts.Serial 
SET Actions.StartDate = 'NewDate' 
WHERE Actions.STARTDATE < '2015-05-01' 
    AND Actions.EXPORTDATE is null 
    AND Contracts.EndDate < '2015-03-01' 

Если вы хотите, чтобы сократить запросы, которые можно использовать алиасы для таблиц, например Contracts AS C, а затем обратитесь к таблице, используя псевдоним: C.EndDate < '2015-03-01'.

+0

Спасибо, что этот выбор работает, но обновление дает мне ошибку 1064, говоря, что синтаксис плохо для «WHERE ..... is null and Contracts». – mloraditch

+1

@mloraditch О, мой плохой извините, предложение 'where' должно появиться после утверждения' set', которое я думаю. – jpw

+0

Дох, я тоже должен был это поймать! Спасибо! – mloraditch

2

Или используя альтернативные обозначения.

SELECT * from ACTIONS act 
INNER JOIN CONTRACTS con on act.serial = con.serial 
where con STARTDATE < '2015-05-01' 
and act.EXPORTDATE is null 
+0

Благодарим за дополнительную информацию! – mloraditch

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