![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]()
Запросы в SQL Access.
Схематично запрос выглядит так: Код:
Смысл этого запроса в том, чтобы сделать вычисления Остатка расхода до первой даты(OstatokPrihNach) и до второй даты (OstatokPrihKonec). В чем проблема: Запрос работает только, если OstatokPrihNach возвращает какие-либо значения. Но если дата указана до того периода, когда не было каких-либо расходов, то в данном подзапросе таблица пустая и в самом основном запросе она тоже становится пустой. А надо чтобы в данных полях отображался бы 0, и показывались поля OstatokPrihKonec.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
![]() |
![]() |
![]() |
#2 |
Участник клуба Подтвердите свой е-майл
Регистрация: 14.12.2007
Сообщений: 1,434
|
![]()
Так сложно ответить в чем проблема.
Возможно это происходит по тому, что если поле пусто (NULL) его нельзя вычесть из числа, по этому и результат (OstatokPrihNach) у вас пуст.
Проповедую design patterns, верую в MVC, доверяю eXtrime programming.
![]() |
![]() |
![]() |
![]() |
#3 | |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]() Цитата:
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
|
![]() |
![]() |
![]() |
#4 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
гыгы
больше похоже на пятничную задачу - что нужно писать в подселекте, чтобы наверху появились нуллы нет данных - вот и нулл если есть в акссессе функа NVL(a, b) [если первый параметр нулловый, то вернет то что указано во втором параметре] или что-то подобное, то заюзать ее, если нет, то можно и case-ом обойтись |
![]() |
![]() |
![]() |
#5 | |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]() Цитата:
Но все равно мне трудно понять как это может помочь. Рассмотрим простой пример: Предположим, есть три связанные таблицы material (kodmaterial, name) и Prihod (kol, stoimost, kodPrih, kodmaterial, kodprihod) и PrihodDop(kodprihod, dateprihod). Связь между ними один ко многим (material.kodmaterial=Prihod.kodmat erial) and (Prihod.kodprihod=PrihodDop.kodprih od). То есть для каждого материала есть запись его количества и стоимости и даты прихода. Задача в том, чтобы вывести сумму количества материала за определенный период. Например, если пишем такой запрос: Код:
Например: Код:
Код:
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
|
![]() |
![]() |
![]() |
#6 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
вот это уже понятнее
а то какие-то сферические запросы в вакууме тебе нужно использовать внешнее объединение таблиц ака left outer join той таблицы, в которой данных может не быть а IIF() применять для суммы в таком виде Код:
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]()
Пробовал писать запрос так:
Код:
Пробовал менять LEFT на RIGHT и с комбинацией INNER, либо ничего не меняется либо выводит ошибку синтаксиса. На FULL OUTER JOIN и UNION JOIN Access Jet SQL пишет ошибку синтаксиса, может как-то по другому происходит включение из обеих таблиц. Пробовал просто для двух таблиц material и Prihod сделать соединение по LEFT OUTER JOIN, но все равно выводит как для LEFT INNER JOIN. В чем у меня ошибка?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]()
P.S. Делаю в Access 2007 (формат Access 2002-2003).
По справке вроде поддерживает OUTER: http://office.microsoft.com/en-us/ac...345551033.aspx Пробовал и и через дизайнер запросов в Access менять тип связи, все равно выводит одно и тоже.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
![]() |
![]() |
![]() |
#9 |
SQL-коддинг
Участник клуба
Регистрация: 16.01.2009
Сообщений: 1,192
|
![]()
1) и чего? чтобы хранить дату прихода по айтему - нужна прям отдельная таблица?! или там все-таки побольше полей?!
2) почему у тебя в запросе одна таблица, а в связке другая? Код:
Код:
|
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 06.03.2009
Сообщений: 583
|
![]()
to soleil@mmc:
1) Там побольше полей, плюс потом к этой таблице PrihodDop там потом таблица со складом привязана. Я бы конечно соединил таблицу Prihod и PrihodDop, но изначально в таком утвержденном виде дали таблицу. Вдруг надо будет чтобы для каждого количества материала по определенной стоимости есть своя дата поступления? 2) В моих таблицах поля неудобо читаемы (не я создавал), поэтому заменил их в примере на другие. Код:
Схема предложенная тобой тоже возникала у меня в мозгу, но постоянно запутывался в реализации. Попробую попозже написать по твоей схеме.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить пустую строку из ListView | Shouldercannon | Общие вопросы Delphi | 2 | 28.04.2010 16:02 |
Вернуть пустую ячейку | Ruben | Microsoft Office Excel | 3 | 05.02.2010 16:20 |
Копирование данных на первую пустую ячейку | kzld | Microsoft Office Excel | 8 | 15.07.2009 14:06 |
если поле Patr пусто или null то пустую строку возвращает | azat | БД в Delphi | 5 | 01.02.2008 13:05 |
как удалить пустую страницу? | Gambler | Microsoft Office Word | 1 | 29.10.2006 20:57 |