2014-12-03 2 views
0

Я пытаюсь вставить записи в таблицу, которые не указаны в другой таблице, а также имеют определенное значение в поле. То, что я придумал, но почему-то возвращает только тех, у кого есть значение APPROVED или APPROVED WITH CHANGES в поле APPROVAL STATE, и я очень смущен тем, как его исправить. Любая помощь по этой проблеме будет принята с благодарностью!Предложение Double where в sql

verifiedForm = "INSERT INTO VerifiedFormularies ([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION], [APPROVAL STATE]) " & _ 
       "SELECT DISTINCT DD.[CLIENT ID], DD.[CLIENT NAME], DD.[MARKET SEGMENT], DD.[FORMULARY ID], DD.[FORMULARY NAME], DD.[FORMULARY VERSION], DD.[APPROVAL STATE] " & _ 
       "FROM " & tableName & " as DD " & _ 
       "Where DD.[Client ID] NOT IN (SELECT Exclusions.[Client ID] FROM Exclusions) " & _ 
       "AND DD.[APPROVAL STATE] IN (""APPROVED AND PUBLISHED"",""APPROVED"",""APPROVED WITH POSTED CHANGES"",""APPROVED WITH CHANGES"") " 
+0

что вы имеете в виду, это только возвращает .. вставку не удается? выбор не выполняется? поскольку он не включает утвержденные и опубликованные ценности или что? – xQbert

+0

Он только вставляет записи, УТВЕРЖДЕННЫЕ или УТВЕРЖДЕННЫЕ ИЗМЕНЕНИЯМИ в поле СОСТОЯНИЕ УТВЕРЖДЕНИЯ, в таблицу VerifiedFormularies. – William

+0

Это связано с тем, что у вас нет записей с условием утверждения в 'tableName' с« утверждением состояния »одобренных и опубликованных или одобренных с опубликованными изменениями». ИЛИ те, которые существуют, обмениваются идентификатором клиента в таблице исключений. Мне нужно будет увидеть примерные данные, чтобы подтвердить это, но SQL выглядит правильно для меня, поэтому ошибка - это вероятные данные или ваши ожидания результатов. Покажите запись, которую вы ожидаете увидеть в результатах вашего вопроса, и убедитесь, что она не существует в исключениях и имеет состояние одобрения, соответствующее перечисленным. Наконец, обычно я использую «вместо», когда внутри блоков. – xQbert

ответ

0

Может быть, это ... замена в «с. Я думаю, что вы делаете это, хотя VBA и я не знаю, как лечит водитель» против ", даже если это с помощью ADO ... возможно, водитель плохо относится к «правильному» ... но тогда я ожидал бы, что «Approved with Changes» также не сработает ...

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

verifiedForm = "INSERT INTO VerifiedFormularies ([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION], [APPROVAL STATE]) " & _ 
       "SELECT DISTINCT DD.[CLIENT ID], DD.[CLIENT NAME], DD.[MARKET SEGMENT], DD.[FORMULARY ID], DD.[FORMULARY NAME], DD.[FORMULARY VERSION], DD.[APPROVAL STATE] " & _ 
       "FROM " & tableName & " as DD " & _ 
       "Where DD.[Client ID] NOT IN (SELECT Exclusions.[Client ID] FROM Exclusions) " & _ 
       "AND DD.[APPROVAL STATE] IN ('APPROVED AND PUBLISHED','APPROVED','APPROVED WITH POSTED CHANGES','APPROVED WITH CHANGES') " 

Я не знаю, как ручки доступа "против", хотя ....

Что Select count(*), [approval state] from tablename group by [approval state] возвращение? если 0 рассчитывать на двух не хватает, то вопрос о данных.

то, что делает ...

SELECT * 
FROM tablename DD 
LEFT JOIN exclusions E 
on DD.[Client ID] = E.[Client ID] 
WHERE DD.[Approval State] in (""APPROVED AND PUBLISHED"",""APPROVED WITH POSTED CHANGES"") 

если нет записей, то нет клиента DD записи с одобрения государств нет в списке исключений.

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