Форум программистов, компьютерный форум, киберфорум
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/54: Рейтинг темы: голосов - 54, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 10.03.2009
Сообщений: 47
1

Вопрос по запросу

19.05.2009, 02:02. Показов 9974. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Делаю запрос (необходимо получить выборку содержащую номенклатуру и все типы цен для нее, если тип цен не установлен цена =0)
ВЫБРАТЬ
ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Наименование,
ЦеныНоменклатурыСрезПоследних.Номенклатура.ЭтоГруппа КАК ЭтоГруппа,
ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ПОЛНОЕ СОЕДИНЕНИЕ Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры
ПО ЦеныНоменклатурыСрезПоследних.ТипЦен = ТипыЦенНоменклатуры.Ссылка
ИТОГИ ПО
Наименование ИЕРАРХИЯ

Затем вывожу результат в ДеревоЗначений
Получаю примерно следующее
Группа
Номенклатура1
Номенклатура1 Опт1
Номенклатура2
Номенклатура2 Опт2

Для Номенклатура1 тип цен Опт2 не определен (отсутствует в регистре движение)
Для Номенклатура2 тип цен Опт1 не определен

Никак не могу добиться того чтоб было

Группа
Номенклатура1
Номенклатура1 Опт1
Номенклатура1 Опт2
Номенклатура2
Номенклатура2 Опт1
Номенклатура2 Опт2

Дело в том что для номенклатуры, если не установлен тип цен, то она не попадает в результат выборки, а мне необходимо чтоб если для номенклатуры не установлен тип цен она попадала в выборку

Подскажите плиз
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2009, 02:02
Ответы с готовыми решениями:

Вопрос по запросу
В перекрестных запросах Access можно выводить фиксированные столбцы. Можно ли, также, выводить...

Вопрос по запросу?
Доброго дня! Кнопка вызывает запрос параметры которых вводятся в форме. Как программно...

Вопрос по запросу
Есть запрос в нем 2 таблицы. В одном из полей второй таблицы условие отбора соответствующее...

Вопрос по запросу
Народ нужна помощь с запросом. Есть БД, нужно в ней ничего не меняя создать запрос: "Вывести...

4
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
19.05.2009, 02:47 2
Предлагаю сделать вложенный запрос, в котором будет создаваться декартово произведение элементов номенклатуры с элементами справочника типы цен, а затем к этому запросу левым соединением подсоединять значения цен.

<!--shcode--><pre><code class=,>ВЫБРАТЬ РАЗЛИЧНЫЕ
ВложенныйЗапрос.Номенклатура,
ВложенныйЗапрос.ТипЦен,
ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
(ВЫБРАТЬ
Номенклатура.Ссылка КАК Номенклатура,
ТипыЦенНоменклатуры.Ссылка КАК ТипЦен
ИЗ
Справочник.ТипыЦенНоменклатуры КАК ТипыЦенНоменклатуры,
Справочник.Номенклатура КАК Номенклатура) КАК ВложенныйЗапрос
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыСрезПоследних
ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И ВложенныйЗапрос.ТипЦен = ЦеныНоменклатурыСрезПоследних.ТипЦен[/CODE]
Без слова РАЗЛИЧНЫЕ почему-то задваиваются строки, где есть тип цен. Почему - так и не понял.
0
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
19.05.2009, 10:03 3
1) Думаю, ЦеныНоменклатурыСрезПоследних.Цена - лишнее, 2 раза к одной таблице обращаемся, проще доставать из вложенного запроса.
2)Задваиваются, потому что вы используете вкачестве источника таблицу, в которую включены парные записи. если наложить на вложенный запрос "различные" то результат должен быть тотже). Или попробовать ВНУТРЕННЕЕ соединение. А по поводу


Цитата Сообщение от konst
сли тип цен не установлен цена =0
то тут нужно использовать вычисляемое поле, которое примерно будет выглядеть так:
одно поле - ЕСТЬNULL(ВложенныйЗапрос.ТипЦен,0) как типЦен, //вместо ВложенныйЗапрос.ТипЦен,
второе - ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена,0) как Цена // соответствено вместо Цены

Вобщем, почитайте в синтаксис-помошнике, там все есть). Вытягивайте через "Содержание", так будет проще
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 1,399
19.05.2009, 22:49 4
Цитата Сообщение от tanat
1) Думаю, ЦеныНоменклатурыСрезПоследних.Цена - лишнее, 2 раза к одной таблице обращаемся, проще доставать из вложенного запроса.
Где два раза?


Цитата Сообщение от tanat
2)Задваиваются, потому что вы используете вкачестве источника таблицу, в которую включены парные записи.
Если выполнить отдельно сложенный запрос - парных записей в нем нет.
0
0 / 0 / 0
Регистрация: 02.03.2007
Сообщений: 272
20.05.2009, 09:31 5
Вы правы, не внимателен был).

Но по поводу вычисляемых полей - все в силе пока остается).
0
20.05.2009, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2009, 09:31
Помогаю со студенческими работами здесь

Вопрос по запросу
Set rstBatr = dbs.OpenRecordset('SELECT Sales.data, Sales.saleP FROM Sales GROUP BY Sales.data,...

вопрос по запросу
Есть бд( прикреплю), от разных компаний получаем квитанции и полиса, которые в итоге выдаются...

вопрос по запросу
добрый день уважаемые форумчане! С новым вас годом, не подскажите ли новичку где загвоздка в...

Глупый вопрос по запросу
Извиняюсь за глупый вопрос, но как выполнить запрос указывая в качестве условия несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru