SQL - несколько условий в функции DCount () - PullRequest
0 голосов
/ 28 июня 2011

Я использую MS Access 2007.

A: DCount("[Name]","[Main]","[Name] = 'Mark'")/
   DCount("[Entry]","[Main]","[Entry] = 1")

Хорошо, поэтому я в основном подсчитываю количество людей с именем Mark и делю его на число Entry's, = = 1 в моей базе данных.,Это достаточно просто, но я пытаюсь применить третье условие, где

[Местоположение]! [Город] = 'Чикаго'

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

   DCount("[Name]","[Main]","[Name] = 'Mark' AND [Location]![City] = 'Chicago'")/
   DCount("[Entry]","[Main]","[Entry] = 1")

Я также попытался отфильтровать город с помощью предложения Where в представлении «Дизайн», ноусловие применяется после вычисления, приведенного выше, поэтому расчет будет одинаковым независимо от города. Мне просто нужно выполнить приведенный выше расчет для города Чикаго.

Возможно ли что-то подобное с DCount?

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

Спасибо

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Я просто отправлял тот же ответ, что и @ HansUp's. У меня есть альтернативный способ сделать это, и это использовать мгновенный поиск набора записей:

  Dim varReturnValue as Variant

  varReturnValue = CurrentDB.OpenRecordset("SELECT Main.[Name] FROM Main INNER JOIN Location ON Main.City_ID = Location.City_ID WHERE Main.[Name] = 'Mark' AND Location.City = 'Chicago';")(0)

Возвращает первое поле в возвращенном наборе записей (индекс начинается с нуля). Таким образом, вам не нужно сохранять запрос.

1 голос
/ 29 июня 2011

Что такое [Местоположение]! [Город]?Мой ответ основан на предположении, что он относится к полю с именем City в таблице с именем Location.

Если это правильно, я думаю, что ваша проблема в том, что вы пытаетесь указать условие на основе поля, которое не является частью домена ([Main]), который вы сказали DCountиспользовать.

Из Документация Microsoft , домен " Строковое выражение, идентифицирующее набор записей, составляющих домен. Это может быть имя таблицы или имя запроса для запроса, которыйпараметр не требуется."

Поэтому, если вы хотите, чтобы критерии DCount ссылались на поля в двух таблицах, объедините таблицы в виде запроса в один"домен".Возможно, ваш запрос может выглядеть примерно так: «qryMainWithCity»:

SELECT m.[Name], m.Entry, m.City_ID, l.City
FROM
    Main AS m
    INNER JOIN Location AS l
    ON m.City_ID = l.City_ID;

Если этот запрос работает для вашей ситуации, вы сможете получить то, что хотите, с помощью выражения DCount, например:

DCount("*","qryMainWithCity","[Name] = 'Mark' AND City = 'Chicago'")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...