Вложенный запрос. Access2000

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Вложенный запрос. Access2000

Сообщение Mao » 30.04.2005 (Сб) 14:25

Есть такой запрос
Код: Выделить всё
SELECT Clients.Client AS Client1,
(SELECT Sum(CashFlow.Credit - CashFlow.Debit) AS Saldo FROM Clients INNER JOIN CashFlow ON Clients.IdClient = CashFlow.Client WHERE CashFlow.Date < #9/1/2004# AND CashFlow.Client=??? GROUP BY Clients.Client;) AS Saldo,
Sum(CashFlow.Credit) AS Credit,
Sum(CashFlow.Debit) AS Debit
FROM Clients INNER JOIN CashFlow ON Clients.IdClient = CashFlow.Client
WHERE (((CashFlow.Date) Between #9/1/2004# And #12/31/2004#))
GROUP BY Clients.Client;

Какое поле задавать во вложенном запросе в выражении WHERE???
Client1 пробовал, не получается, при запуске запроса просит ввести "Client1"
Когда вставляешь
Код: Выделить всё
CashFlow.Client=Clients.IdClients
вылезает ошибка, о том что вложенный запрос возврашает не одно значение.
Этот запрос упрощенный, так что не смотрите что в FROM части вложенного запроса есть таблица Clients, когда в SELECT части данные из таблицы Clients не используются.
Подскажите как правильно сформировать запрос???
В результате выполнения данного запроса хочется видеть сальдо на начало периода, кредит и дебит по всем клиентам за период.
Заранее пасиба =))

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 02.05.2005 (Пн) 0:05

Вопрос номер раз: чем отличается Clients.Client от Clients.IdClient? Подозреваю, в силу приобретенной телепатии, что второе - числовой ключ, возможно первичный, а вот первое... ну, допустим, что-то типа ФИО. Я угадал? Ладно, неважно.

Гы. А нахрена тебе в подзапросе Group By? Точно без него не работает? Ну тогда уж добавь в селект лист подзапроса ClientId, что ли - чтобы было по чем джойнить. А вообще, что-то тут не так - ответь-ка на первый вопрос сначала, окей?

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 02.05.2005 (Пн) 12:43

Вопрос решен.
Clients.Client - это пусть буит ФИО клиента =)), не буду же я в отчет давать Код клиента.
А как без GROUP BY обойтись?? Так как в подчиненном запросе агрегирующая функция то нуна же показать по чему суммировать, конечно можно группировать и по CashFlow.Client, но суть от этого не меняется.
А вопрос решался оказывается просто. Нужно было в подчиненном запросе таблице CashFlow указать другое имя во FROM части. И в части WHERE подчиненного запроса указывать [<Другое имя таблицы CashFlow>].Client = CashFlow.Client. Как грится: А ларчик открывался проста =))


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron