Я хочу создать новую запись в таблице почтовых программ, где три поля будут содержать значения: contacts_first_filter_id, mailer_states_id, creation_at.И два из этих значений основаны на запросах из других таблиц, а последнее - только текущее время.
Я пробовал несколько способов добиться этого, но ни один из них не сработал.Сначала я попытался создать запрос непосредственно в sql design:
INSERT INTO mailers ( contacts_first_filter_id, mailer_states_id, created_at )
VALUES (DLookup("id","update_mailer_step_two"), DLookup("id","mailer_states" & "mailer_state = 'sent'"), Now());
Это выдает ошибку 'unknown'.
Я также попытался поместить это в редактор VBA и вызвать его нажатием кнопки:
Private Sub Command6_Click()
Dim CFF_ID As String, MS_ID As String, strSQL As String
CFF_ID = "SELECT update_mailer_step_two.id FROM update_mailer_step_two"
MS_ID = "SELECT mailer_states.id FROM mailer_states WHERE mailer_states.mailer_state = 'sent'"
strSQL = "INSERT INTO mailers ( contacts_first_filter_id, mailer_states_id, created_at )VALUES ((" & CFF_ID & "),(" & MS_ID & "),NOW())"
DoCmd.RunSQL strSQL
End Sub
Это приводит к ошибке: «Ввод запроса должен содержать хотя бы одну таблицу или запрос».
Я испробовал приведенную ниже рекомендацию, используя INNER JOIN, но, хотя это не приводит к ошибке, он добавляет 0 строк, предположительно потому, что между update_mailer_step_two и mailer_states нет ссылки:
INSERT INTO mailers ( contacts_first_filter_id, mailer_states_id, created_at )
SELECT update_mailer_step_two.id, mailer_states.id, Now()
FROM update_mailer_step_two INNER JOIN mailer_states ON update_mailer_step_two.id = mailer_states.ID
WHERE mailer_states.mailer_state = 'sent';
mailer_states tableэто просто таблица, которая содержит поле mailer_state с текстом.Это просто таблица поиска, которая никогда не меняется.
update_mailer_step_2 содержит одно поле с именем id, которое содержит набор идентификаторов, связанных с контактами в базе данных.Следовательно, вообще нет никакой связи между mailer_states и update_mailer_step_2.
** То, что я думал, что смогу сделать, это когда я создаю update_mailer_step_two, добавлю новый столбец и по умолчанию его со значением, соответствующим mailer_states, так чтоВНУТРЕННЕЕ СОЕДИНЕНИЕ будет работать.К сожалению, кажется, что вы не можете сделать это в Access!
В другом сообщении, посвященном стеке, вы можете:
SQL для добавления столбца со значением по умолчанию - Access 2003
Но это не работает для меня.
У меня закончились идеи о том, как разместить запрос на основе другой таблицы в качестве значения для запроса, который предназначен для создания новой записи в таблице.
Спасибо за ответ.