Всем привет.
Такой вопрос, ибо я в этой теме (в см БД) почти случайно,
но в нете так и не нашел подобного.
Есть таблица Работы: ФИО автора, Вид работы. для Access'a
Надо выбрать тех авторов, которые написали более одной статьи.
Я делаю так (опираясь на эту страницу
http://forum.ishodniki.ru/index.php?topic=12221.0), сам язык почти не знаю.
SELECT S1.VID, S1.FIO
FROM (SELECT Работы.[Вид работы] AS VID, Работы.[ФИО автора] AS FIO, count(Работы.[ФИО автора]) AS cnt
FROM Работы
WHERE Работы.[Вид работы]="Статья") AS S1
WHERE S1.cnt>1;
Получаю: Попытка выполнить запрос, который не включает указанное выражение VID как часть статистической функции или группы.
Может кто может подсказать в чем дело?
Более того, сейчас проверил, такой запрос ничего не выводит (хотя есть совпад строка)
SELECT Работы.[Вид работы], Работы.[ФИО автора]
FROM Работы
WHERE (Работы.[Вид работы]="Статья")
В ассеss'e вообще есть count()? Потому что если поставить count опять идет ошибка
Здравствуйте, venicum, Вы писали:
V>Всем привет.
V>Такой вопрос, ибо я в этой теме (в см БД) почти случайно,
V>но в нете так и не нашел подобного.
V>Есть таблица Работы: ФИО автора, Вид работы. для Access'a
V>Надо выбрать тех авторов, которые написали более одной статьи.
V>Я делаю так (опираясь на эту страницу http://forum.ishodniki.ru/index.php?topic=12221.0), сам язык почти не знаю.
V>V>SELECT S1.VID, S1.FIO
V>FROM (SELECT Работы.[Вид работы] AS VID, Работы.[ФИО автора] AS FIO, count(Работы.[ФИО автора]) AS cnt
V> FROM Работы
V> WHERE Работы.[Вид работы]="Статья") AS S1
V>WHERE S1.cnt>1;
V>
V>Получаю: Попытка выполнить запрос, который не включает указанное выражение VID как часть статистической функции или группы.
V>Может кто может подсказать в чем дело?
Ну ошибка очевидно говорит о том, что запрос не содержит поле VID в числе полей группировки, то есть попросту говоря — у вас нет оператора GROUP BY. Я не сильна в Access (не знаю списка доступных команд), но вообще подобные запросы в других БД пишутся обычно по-другому, а именно с использованием HAVING: тогда подзапрос просто исчезает, и остается только один прямой запрос к таблице.
Здравствуйте, sunsquirel, Вы писали:
S>Здравствуйте, venicum, Вы писали:
V>>
S>Ну ошибка очевидно говорит о том, что запрос не содержит поле VID в числе полей группировки, то есть попросту говоря — у вас нет оператора GROUP BY. Я не сильна в Access (не знаю списка доступных команд), но вообще подобные запросы в других БД пишутся обычно по-другому, а именно с использованием HAVING: тогда подзапрос просто исчезает, и остается только один прямой запрос к таблице.
Спасибо, сделал:
SELECT Работы.[ФИО автора], Count(Работы.[ФИО автора]) AS [Количество работ]
FROM Работы
WHERE Работы.[Вид работы]="Статья"
GROUP BY Работы.[ФИО автора]
HAVING Count(Работы.[ФИО автора])>1;
venicum wrote:
> Надо выбрать тех авторов, которые написали более одной статьи.
> Я делаю так (опираясь на эту страницу
> SELECT S1.VID, S1.FIO
> FROM (SELECT Работы.[Вид работы] AS VID, Работы.[ФИО автора] AS FIO, count(Работы.[ФИО автора]) AS cnt
> FROM Работы
> WHERE Работы.[Вид работы]="Статья") AS S1
> WHERE S1.cnt>1;
Это неправильный запрос. Тебе нужно писать запрос с коррелированным подзапросом,
выводящим кол-во статей автора.
Posted via RSDN NNTP Server 2.1 beta