Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Вниз

Агрегатные функции со строками AVG(), min(),max()...   Найти похожие ветки 

 
DSKalugin ©   (2004-08-02 15:55) [0]

Есть таблица №1 состояний продукции на складе со значениями
не заказана,
заказана,
поступила,
продана,
нет на складе(не поступила на склад от поставщиков).

таблица заказов №2, одним из полей в которой фигурирует состояние заказа со значением из табл №1

представление №3 которое выводит список заказов из таблицы №2
(групировка по основным полям табл №2)

проблема в том, что наряду с товаром "продана" и "поступила" в заказе могут быть детали с сост. "нет на складе", и тогда операция GROUP BY ..., "Состояние", ... возвращает 2е строчки. А нужна одна. Сначала я в этом представлении указал
Where "Состояние"<>"нет на складе"
но попался такой заказ, который содержал одну непоступившую (сост ="нет на складе")позицию. Из-за чего заказ не попал в список заказов (предст №3)
Агрегатные функции со строками AVG(), min(),max() не проходят.
Как решить эту задачу если в списке заказов должны быть показаны все заказы, но при этом не дублировались состояния?


 
Johnmen ©   (2004-08-02 16:00) [1]

Много неясностей....
Приведи хотя бы запрос.


 
stud   (2004-08-02 16:01) [2]


> в списке заказов должны быть показаны все заказы, но при
> этом не дублировались состояния

а если есть разные заказы но с одинаковвым состоянием?


 
Sandman25 ©   (2004-08-02 16:03) [3]

Убрать "состояние" из group by, заменить его в select на max("состояние").

А, по-хорошему, именно 2 заказа и нужно отображать.


 
DSKalugin ©   (2004-08-02 16:33) [4]

таб №1 состояния
CREATE TABLE "detail_position_book" (
   "cod"       INTEGER NOT NULL,
   "position"  VARCHAR(20) NOT NULL
);

таб №2 заказы
CREATE TABLE "opt_ICars" (
   "cod"            INTEGER NOT NULL,
   "FDate"          DATE,
   "ID_seller"      INTEGER,
   "seller_number"  VARCHAR(30), (имя товара)
   "sell_orig_ID"   VARCHAR(10),
   "ZCount"         SMALLINT,
   "SPrice"         NUMERIC(15,5),
   "SCount"         VARCHAR(5),
   "PostCnt"        SMALLINT default 0 NOT NULL,
   "skl_cod"        VARCHAR(30),
   "maker_name"     VARCHAR(30),
   "skl_ID"         INTEGER,
   "ID_dnb"         INTEGER,
   "id_client"      INTEGER NOT NULL,
   "manager"        INTEGER,
   "condition"      INTEGER,
   "input_No"       INTEGER,
   "output_No"      INTEGER,
   "info_plus"      VARCHAR(59),
   "SendDate"       DATE,
   "nacenka"        NUMERIC(10,5),
   "ZamovNo"        INTEGER default 0 NOT NULL,
   "PostPrice"      NUMERIC(15,5) default 0 NOT NULL
);

таб №3 представление со списком заказов
CREATE VIEW "inp_ZakList"(
   "inDate",
   "seller",
   "input_No",
   "client_short",
   "Nacenka",
   "SendDate",
   "output_No",
   "condition")
AS
SELECT "opt_ICars"."FDate", (дата)
 "detail_sellers_book"."ds_name", (имя поставщика)
 "opt_ICars"."input_No", (входящий номер)
 "FirmsAttributes"."ShortName", (имя клиента)
 "opt_ICars"."nacenka",
 "opt_ICars"."SendDate",
 "opt_ICars"."output_No",
 "detail_position_book"."position"
FROM "opt_ICars"
  INNER JOIN "detail_sellers_book" ON ("opt_ICars"."ID_seller" = "detail_sellers_book"."cod")
  INNER JOIN "FirmsAttributes" ON ("opt_ICars"."id_client" = "FirmsAttributes"."f_ID")
  inner join "detail_position_book" on   (("detail_position_book"."cod" = "opt_ICars"."condition") and ("opt_ICars"."condition"<>10))
group by "opt_ICars"."FDate",
 "detail_sellers_book"."ds_name",
 "opt_ICars"."input_No",
 "FirmsAttributes"."ShortName",
 "opt_ICars"."nacenka",
 "opt_ICars"."SendDate",
 "opt_ICars"."output_No",
 "detail_position_book"."position";


 
DSKalugin ©   (2004-08-02 16:40) [5]

>а если есть разные заказы но с одинаковвым состоянием?
будут 2 строчки в списке заказов.
Список заказов "inp_ZakList" на то и есть, чтобы отображать список заказов. Он строится на основе таблицы заказов "opt_ICars" в которой хранится начинка=содержимое заказов (товар, кол-во , цена, дата, номер, клиент, поставщик...)

>max("состояние"). это бы сработало, если бы состояние было численным значением, а так я его вывожу в строчном. Над строчными типами агрегатные функции не выполняются


 
Johnmen ©   (2004-08-02 16:41) [6]

Теперь надо определиться, что есть т.№1. Это признаки заказа ?
Или/и чего-то ещё ?


 
Sandman25 ©   (2004-08-02 16:43) [7]

[5] DSKalugin ©   (02.08.04 16:40)

Над строчными типами агрегатные функции не выполняются

Попробуйте, будете удивлены.


 
Соловьев ©   (2004-08-02 16:46) [8]


> Над строчными типами агрегатные функции не выполняются

count :)


 
ZHK   (2004-08-02 16:50) [9]


> Sandman25 ©   (02.08.04 16:43) [7]
> [5] DSKalugin ©   (02.08.04 16:40)
>
> Над строчными типами агрегатные функции не выполняются
>
> Попробуйте, будете удивлены.

Да, выполняются, аж за ушами свистит. Я базу веду, там значения только строчные. Работают... И денег не просят. И Min и Max и Avg... Все пробовал. Лично.


 
Johnmen ©   (2004-08-02 16:54) [10]

AVG для символьных полей - это сильно...:)


 
DSKalugin ©   (2004-08-02 17:03) [11]

2 Johnmen ©   (02.08.04 16:41) [6]

только признаки. Структуру см выше в [4]
"detail_position_book"

> AVG для символьных полей - это сильно...:)
ООООооо спасибо!!! Я тормоз, признаю :-)))))))))))
Пробовал именно эту функцию, IBExpert ругнулся и я поспешно сделал выводы о неприемлимости такого рода операций над строками.
MIN() заработал как надо! Спасибо :-))))


 
ZHK   (2004-08-02 17:06) [12]


> Johnmen ©   (02.08.04 16:54) [10]
> AVG для символьных полей - это сильно...:)

Гы. :-) Да и правда сильно. Видимо о женщинах думал, а не о функциях. :-)


 
Johnmen ©   (2004-08-02 17:12) [13]

>DSKalugin ©   (02.08.04 17:03) [11]

>только признаки.

Так я и спрашивал, чьи они ?

>MIN() заработал как надо!

Т.е. задача решена ?


 
DSKalugin ©   (2004-08-02 18:26) [14]

решена, спасибо Johnmen, Sandman25 и ZHK :-)))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.08.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.03 c
8-1086784992
karlsn
2004-06-09 16:43
2004.08.29
проблема c SndSoundPlay();


4-1089830351
Sliski Slimak
2004-07-14 22:39
2004.08.29
Модальная форма в DLL


1-1092231104
Jaxtor
2004-08-11 17:31
2004.08.29
Исходники компонент и отладчик


3-1091788451
Самовар
2004-08-06 14:34
2004.08.29
Удаление пустых записей в базе


1-1092267094
mvgfirst
2004-08-12 03:31
2004.08.29
Нужно написать программу сервер используюя SOAP с чего начать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский