Главная страница
    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.024 c
10-1033544642
mmb
2002-10-02 11:44
2004.08.29
Неужели мой вопрос настолько сложный, что никто даже не пытается?


3-1091636422
Piter
2004-08-04 20:20
2004.08.29
Помогите составить запрос


3-1091681955
Марат
2004-08-05 08:59
2004.08.29
Счетчик DBGrid


3-1091532057
Jgn
2004-08-03 15:20
2004.08.29
CheckBox in EHGrid


14-1092215269
RustiK
2004-08-11 13:07
2004.08.29
StringGrid, DBGrid или просто Grid на WinAPI ...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский