Такой, что равен и кол-во больше 1
От: venicum Россия -
Дата: 02.07.10 13:35
Оценка:
Всем привет.
Такой вопрос, ибо я в этой теме (в см БД) почти случайно,
но в нете так и не нашел подобного.
Есть таблица Работы: ФИО автора, Вид работы. для 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 опять идет ошибка
Re: Такой, что равен и кол-во больше 1
От: sunsquirel США  
Дата: 02.07.10 14:11
Оценка:
Здравствуйте, 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: тогда подзапрос просто исчезает, и остается только один прямой запрос к таблице.
Re: Такой, что равен и кол-во больше 1
От: venicum Россия -
Дата: 02.07.10 14:13
Оценка:
V>Всем привет.
V>В ассеss'e вообще есть count()? Потому что если поставить count опять идет ошибка
ага:
функция count есть, но она статическая и видимо не может выполняться с динамическими
Re[2]: Такой, что равен и кол-во больше 1
От: venicum Россия -
Дата: 02.07.10 14:37
Оценка:
Здравствуйте, sunsquirel, Вы писали:

S>Здравствуйте, venicum, Вы писали:

V>>
S>Ну ошибка очевидно говорит о том, что запрос не содержит поле VID в числе полей группировки, то есть попросту говоря — у вас нет оператора GROUP BY. Я не сильна в Access (не знаю списка доступных команд), но вообще подобные запросы в других БД пишутся обычно по-другому, а именно с использованием HAVING: тогда подзапрос просто исчезает, и остается только один прямой запрос к таблице.

Спасибо, сделал:
SELECT Работы.[ФИО автора], Count(Работы.[ФИО автора]) AS [Количество работ]
FROM Работы
WHERE Работы.[Вид работы]="Статья"
GROUP BY Работы.[ФИО автора]
HAVING Count(Работы.[ФИО автора])>1;
Re: Такой, что равен и кол-во больше 1
От: MasterZiv СССР  
Дата: 03.07.10 09:37
Оценка:
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
Re[2]: Такой, что равен и кол-во больше 1
От: venicum Россия -
Дата: 03.07.10 11:54
Оценка:
Здравствуйте, MasterZiv, Вы писали:
MZ>venicum
>> Надо выбрать тех авторов, которые написали более одной статьи.
>> Я делаю так (опираясь на эту страницу
>> SELECT S1.VID, S1.FIO
>> ...
>> WHERE S1.cnt>1;
MZ>Это неправильный запрос. Тебе нужно писать запрос с коррелированным подзапросом,
MZ>выводящим кол-во статей автора.
Спасибо, только я его уже поменял, ниже есть.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.