Я попытался найти ответ для этого в других потоках и не смог его найти. Пожалуйста, простите меня, если он покрыт другой нитью.Запрос доступа - обновление по последней дате
Я относительно новичок в T-SQL, поэтому, пожалуйста, извините, если это то, что я должен уже знать.
У меня есть простой Доступ к базе данных с двумя таблицами: контакты и заказы.
Столбцы контактов - это идентификатор (PK), FirstName, LastName, Address, поле Status (идентификация, если клиент является «ПК», что имеет значение в этом случае), а также имеет поле «Delayed». " Это поле должно быть «истинным» для тех клиентов, которые не заказывали последние два месяца (и «ложные» для тех, кто имеет).
В таблице заказов есть номера заказов, а также идентификатор клиента (PK, связанный с контактами), FirstName, LastName, Date.
Я пытаюсь написать запрос, чтобы обновить поле «Задержка» в таблице «Контакты» на основе последней даты заказа из таблицы «Заказы». В этом случае обновите это поле до «false» для каждого клиента ПК, если их последняя дата заказа будет за последние 60 дней. Это выглядело довольно странно, но я, очевидно, что-то пропустил. Я использую подзапрос SELECT для определения условий. Запрос, кажется, игнорирует мои условия и хочет обновить ВСЕ строки в базе данных. Есть предположения?
UPDATE Contacts SET Contacts.Delayed = False
WHERE EXISTS (SELECT Contacts.FirstName, Contacts.LastName, Contacts.Status, Max(Orders.Date)
FROM Contacts INNER JOIN Orders ON (Contacts.ID = Orders.ContactID)
GROUP BY Contacts.FirstName, Contacts.LastName, Contacts.Status
HAVING Max(Orders.Date) > Date()-60);
Любая помощь была бы принята с благодарностью.
* «Я относительно новым для T-SQL, поэтому, пожалуйста, простите, если это то, что я уже должен знать.» * - Первое, что вы должны знать, что Microsoft Access не использует «T-SQL» , он использует «Access SQL». T-SQL - это диалект, используемый Microsoft SQL Server. Они не одинаковы. –
Да, я знаю, и я понимаю, что они не то же самое. Хотя я больше привык работать с T-SQL, Access SQL похож, но его нюансы немного расстраивают, чтобы привыкнуть. :) –
Хорошо, хорошо. Теперь есть особая причина, по которой вопрос помечен как «sql-server»? –