Таблица обновления ADO SQL с результатом группирования по запросу - PullRequest
1 голос
/ 12 мая 2010

Я пытаюсь обновить записи в таблице .mdb с количеством записей, содержащих одно и то же значение.

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

UPDATE table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT  FROM table1 GROUP BY PH_BSP)  AS B
ON A.PH_BSP=B.PH_BSP
SET A.PH_SORT = B.PHCOUNT;

Есть идеи?

Ответы [ 3 ]

1 голос
/ 12 мая 2010

Не проверено, но, таким образом, изложение утверждения должно решить вашу проблему

UPDATE A
SET A.PH_SORT = B.PHCOUNT
From table1 AS A
INNER JOIN (SELECT PH_BSP , Count(PH_BSP) AS PHCOUNT  FROM table1 GROUP BY PH_BSP)  AS B
ON A.PH_BSP=B.PH_BSP

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

1 голос
/ 12 мая 2010

Если вы делаете это в Access, вам нужно использовать функцию агрегирования домена:

UPDATE table1 
SET PH_SORT = DCount("PH_BSP","Table1","PH_BSP='" & PH_BSP & "'")

Вышеприведенное предполагает, что PH_BSP является текстовым полем, пропустите одинарные кавычки, если оно числовое.

0 голосов
/ 12 мая 2010

Вы пробовали что-то похожее?

update table1 as a
    set a.ph_sort = (
        select COUNT(b.ph_bsp) as phcount
            from table1 b
            where b.ph_bsp = a.ph_bsp)

Я предполагаю, что SQL Server здесь.

Но это или что-то подобное должно сделать это, я думаю.

...