2015-01-09 3 views
1

Я пытаюсь создать поле (результат вычисления) в FileMaker Pro 13, который будет возвращать количество раз, когда определенное значение выбирается в определенном поле.Поиск количества вхождений для определенного значения

Для примера:

Скажем у вас есть таблица 1. Таблица 1 имеет только 1 поле с именем поля 1. Поле 1 является выпадающий список поля с параметрами «A», «B», & «C» , Следующие данные из записей таблицы 1, используя поле, поле 1:

Запись 1: Таблица 1 :: Поле 1 = "А"

Запись 2: Таблица 1 :: Поле 1 = «А "

Запись 3: Таблица 1 :: поле 1 = "B"

Запись 4: Таблица 1 :: поле 1 = "C"

То, что я хочу, это счетчик, который осуществляет поиск по записям для таблицы 1 и определяет, сколько раз выбирается определенная опция. Например, я хочу знать, сколько раз «A» было выбрано в поле 1, и оно вернет «2».

То, что я пытался сделать до сих пор является следующее, но он не работал так, горячие (возвращает «?»):

ExecuteSQL (

«Выбор поля 1

ОТ Таблица 1

ГДЕ поле 1 = 'A'»

; ""; "")

Любые предложения по правильному сценарию SQL?

ответ

1

Правильная версия вашего Execute

ExecuteSQL(

"SELECT Count(\"Field 1\") 

FROM \"Table 1\" 

WHERE \"Field 1\" = ?" 

;"";"";"A") 

При использовании ExecuteSQL, вы передаете строку в функцию FileMaker, а затем за кулисами FileMaker использует эту строку и различные другие части вы даете он должен выполнить действие.

Если у вас есть свободное место в поле или имени таблицы, например. Field 1, FileMaker думает, что вы имеете в виду «Выберите имя поля Field и поле с именем 1. Вам нужно указать имя поля, если оно содержит пробелы или специальные символы, но вы не можете использовать только обычные двойные кавычки, потому что это приведет к завершению строки.

путь, чтобы исправить это то, что я сделал выше, избежать двойные кавычки вокруг имени поля или таблицы

Также ? и "A" в нижней части позволяет передавать данные в запросе, то есть. параметризуя запрос. Это означает, что вы можете сделать цикл, в котором каждая итерация цикла вы передаете другим значением, где у меня есть "A".Вы можете сделать это:

ExecuteSQL(

"SELECT Count(\"Field 1\") 

FROM \"Table 1\" 

WHERE \"Field 1\" = ?" 

;"";""; Table 1::Search Field) 

или

ExecuteSQL(

"SELECT Count(\"Field 1\") 

FROM \"Table 1\" 

WHERE \"Field 1\" = ?" 

;"";"";$searchValue) 

Будьте осторожны, ExecuteSQL не кэширует записи, которые он тянет, если вы находитесь в среде клиент/сервер, так этот расчет может быть довольно вялым если у вас много записей в таблице, вы переходите через wan или оба. Я предлагаю попытаться получить счет по-другому.

+0

Работал СОВЕРШЕННО, спасибо !!! –

+0

Без проблем :) рад, что я мог бы помочь. –

0
Select count(*) from Table1 where Field1='A' 
+0

Я пробовал это, и по какой-то причине это не сработало. Вернулся: «?» –

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