Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сложный запрос, Access 
:(
    Опции темы
Chyslyvchyk
Дата 21.1.2006, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Есть 4 таблицы: base(kol1,kol2,prim,name,cena), cross(id,nomer,name), _spec(opt,name), skidki(Поле5,name). Связаны таблицы по полю name.

Нужно сделать выборку:

1) поле id = cross.id

2) поле nomer = cross.nomer

3) поле cena =
если base.cena <> 0, тогда
если base.prim = '#', то брать значение из _spec.opt
если base.prim <> '#', то (base.cena/100)*(100-skidki.Поле5)

4) поле percent =
если base.kol1<>'' или base.kol2<>'', тогда percent = 1
если base.kol1='', но base.kol2<>'', тогда percent = 2
все остальное выбросить

Можно это как-то все в одном запросе оформить?





--------------------
Простота - сестра таланта!
PM MAIL   Вверх
bas
Дата 21.1.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 14.8.2002
Где: Молдова, Кишинев

Репутация: нет
Всего: 2



используй iif
PM MAIL   Вверх
Chyslyvchyk
Дата 25.1.2006, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 9.5.2004

Репутация: нет
Всего: 5



Все несколько раз переиграли и условие поменялось. Есть 4 таблицы: base(kol1,kol2,kol3,prim,kod,cena,kodpgr), cross(id,nomer,kod), _spec(opt,name), skidki(Поле5,Поле3). Связаны таблицы кто как: base.kod=cross.kod, base.kodpgr=skidki.Поле3, _spec.kod=base.kod

Нужно сделать выборку:

1) поле id = cross.id

2) поле nomer = cross.nomer

3) поле cena =
если base.cena <> 0, тогда
если base.prim = '#', то брать значение из _spec.opt
если base.prim <> '#', то (base.cena/100)*(100-skidki.Поле5)

4) поле percent =
если base.kol1<>'' или base.kol2<>'', тогда percent = 1
если base.kol1='' и base.kol2='' и base.kol3<>'', тогда percent = 2
все остальное выбросить

Вот что родилось после долгих потуг (bas, спасибо):
Код

SELECT cross.id_firma, cross.nomer, (
SELECT  ((base.CENA/100)*(100-(SELECT Поле5 FROM skidki WHERE skidki.Поле3=base.KODPGR)))  
FROM base 
WHERE (base.CENA <> 0) and (base.kod = cross.kod) 
) AS Cena, 
(
SELECT IIF([base.KOL1]<>'' OR [base.KOL2]<>'',1,(IIF([base.KOL1]='' AND [base.KOL2]='' AND [base.KOL3]<>'',2,0))) 
FROM base 
WHERE base.kod = cross.kod
) AS Percent1
FROM [cross] INNER JOIN (base INNER JOIN skidki ON base.KODPGR = skidki.Поле3) ON cross.KOD = base.KOD;



Работает ужасно долго. Данные выгрузить в таблицу или какой-нить файл не может - зависает. Подкорректируйте, пожалуйста. smile

И так и не вышло включить в это действо:
для поля 3) условие с #
для поля 4) все остальное выбросить

Это сообщение отредактировал(а) Chyslyvchyk - 25.1.2006, 11:57


--------------------
Простота - сестра таланта!
PM MAIL   Вверх
Akina
Дата 25.1.2006, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Chyslyvchyk @ 25.1.2006, 12:50 Найти цитируемый пост)

Все несколько раз переиграли и условие поменялось.

Слушай внимательно, и не говори что не слышал.

Вместо того чтобы описывать что у тебя за таблицы и сколько их (тем более что один хрен половину не указал - хотя бы ключевые поля) и как они связаны - делаешь базу только с нужными таблицами без данных, но со схемой связей, сжимаешь ее, пакуешь ЗИПом или РАРом и аттачишь в постинг.

Цитата(Chyslyvchyk @ 25.1.2006, 12:50 Найти цитируемый пост)

Работает ужасно долго.

Ну еще бы! нафига ты вложенных запросов настрогал?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0441 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.