Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле / 18 сообщений из 18, страница 1 из 1
20.04.2003, 14:07
    #32144661
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Ситуация следующая: есть две таблицы
1. Skl_tk - поля: Cod - уникальное поле, Art, Diz, Col
2. Skl_rul - поля: Cod, Rulon, Kolvo
Мне надо выполнить след запрос:
select skl_tk.*, sum (skl_rul.kolvo) as NAL
from skl_tk, skl_rul
where skl_tk.cod=skl_rul.kod
group by skl_rul.cod
order skl_tk.ART, skl_tk.DIZ, skl_tk.COL

Запрос естественно не работает:(((
Что в нём не правильно?????
И можно ли добавить в таблицу Skl_tk вычисляемое поле NAL равное сумме Kolvo в таблице Skl_rul по полю COD?????
И если можно , то как????

Заранее прошу прощенья за может быть корявое объяснение проблемы.....:)
...
Рейтинг: 0 / 0
21.04.2003, 03:23
    #32144724
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Вычисляемое поле... а ты себе представил как будет выглядеть таблица? Я честно говоря слабо...

Теперь по поводу запроса. Когда он не работает, буть добр, пиши ошибку, дабы не сидеть и не искать ее. А не работает он... по одной причине. Давай маленько опишу то что пишется в нормальных книгах по SQL и примерно упоминается в неочень нормальных. Начального уроня разумеется. Секция Group by как бы делит результирующий набор данных на части. Причем делятся они по принципу одинаковых наборов значений полей перечисленных в секции Group by . (В случае с одним полем собираются в группы по одинаковым значениям поля). Далее агрегатные функции, коей является и sum , производят необходимые вычесления.

Теперь собственно к вопросу. Откуда система может знать что значения набора полей skl_tk.* будут уникальны в пределах той части, которую выделяет Group by . Отсюда напрашивается вывод.

Резюме.
В секции select могут использоваться только те поля, которые обявлены в секции Group by , либо поля на которые наложены агрегатные функции

Вот и все

P.S.
Почитай книги, и многое станет ясным
...
Рейтинг: 0 / 0
21.04.2003, 09:23
    #32144777
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Ок. Чуть-чуть изменим вопрос.
Можно ли в НД IBDataSet добавить вычисляемое поле NAL равное сумме Kolvo в таблице Skl_rul по полю COD?

По поводу Group By - я в курсе как он используется!!! Я заранее попросил прощенья за корявость вопроса, и видимо не напрасно.... Я написал select для того, чтобы объяснить что мне надо получить, а не для того чтобы мне написали какие книги мне читать....Кто может помочь - помогите правильным селектом, а не списком книг для чтения!!!! Книг у меня и так хватает...
Заранее благодарен.
...
Рейтинг: 0 / 0
21.04.2003, 09:48
    #32144786
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Молодой человек, вы видимо огромного самомнения, а толку ноль...
головой работать надо

select [список полей skl_tk] , sum (skl_rul.kolvo) as NAL
from skl_tk, skl_rul
where skl_tk.cod=skl_rul.kod
group by [список полей skl_tk] , skl_rul.cod
order skl_tk.ART, skl_tk.DIZ, skl_tk.COL

Боюсь до того чтоб понять как работает group by ва необходимо уметь слушать и читать. Это вывод на основе моих же слов... кстате, есть и более быстрый вариант, но тут уже думать надо, а вы этого не любите
...
Рейтинг: 0 / 0
21.04.2003, 09:57
    #32144798
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Млин вы здесь все что ли такие умные?????
Если тебе задают вопрос, то какого отвечать типо "читайте книги"????? А на кой тогда форум???? Закройте его и напишите типо того - " Про всё написанно в книгах, а нам влом отвечать вам ламерам".....
И по поводу твоего селекта group by [список полей skl_tk], skl_rul.cod - и что он просуммирует????????????
Млин, и просьба спецом для StarWind - я уж как нибудь без твоих советов обойдусь!!!! Мне не 15 лет, чтобы выслушивать твой трёп, мальчик!!!!!! А по поводу самомнения - не я, а Вы, любезнейший, превозносите себя выше уровня своего.
...
Рейтинг: 0 / 0
21.04.2003, 09:59
    #32144803
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
хорошо, базара нет :)
жизнь научит
...
Рейтинг: 0 / 0
21.04.2003, 10:03
    #32144805
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
StarWind - млин, коль я задал вопрос, то наверное не стыжусь признать того, что не знаю!!!! Если можешь помочь - то помоги реально (можно и материально)).
...
Рейтинг: 0 / 0
21.04.2003, 10:40
    #32144842
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Тебе и помогли. Использование агрегатных функций хорошо описано в любом руководстве по SQL, там же можно прочитать, и что просуммируется, и как употреблять group by
...
Рейтинг: 0 / 0
21.04.2003, 10:55
    #32144852
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
select sum(skl_rul.kolvo) as NAL, skl_tk.cod
from skl_tk, skl_rul
where skl_tk.cod=skl_rul.cod
group by skl_tk.cod

Это рабочий select!!! Суммирует так как надо и то что надо, но мне надо показать остальные поля таблицы skl_tk. Как это сделать???????????????????????????????????????????
...
Рейтинг: 0 / 0
21.04.2003, 11:04
    #32144860
Vagoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
После ткой дрки и нпсать что-то страшно...

Все-таки,
я бы порекомендовал написать точно запрос, например, скопировав его через буфер, потому-что в нем описано слишком много потенциальных ошибок. Даже синтаксическая: в таблице skl_rul описано поле Cod, а в запросе Kod. Вероятно, это опечатка...
Ваш запрос должен работать, с учетом указанного колегами замечания - группировка должна быть по всем полям указанным в запросе, кроме агрегатных. В запросе SKL_TK , в группировке -- SKL_RUL ; в запросе * в группировке -- COD .
...
Рейтинг: 0 / 0
21.04.2003, 11:07
    #32144864
Vagoo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Извиняюсь, написал одновременно...

Перенесите их до агрегатных полей. Правда, не уверен, что они покажут то что надо...
...
Рейтинг: 0 / 0
21.04.2003, 11:16
    #32144873
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Да в том то и дело, что группировку надо делать только по этому полю - skl_rul.cod.

select sum(skl_rul.kolvo) as NAL, skl_tk.cod
from skl_tk, skl_rul
where skl_tk.cod=skl_rul.cod
group by skl_tk.cod

Т.е. есть склад ткани - skl_tk, и есть склад рулонов ткани - skl_rul, причём в складе ткани присутствуют только идентификаторы ткани, а в складе рулонов таже ткань только по номерам рулонов и кол-ву метров в рулоне. То бишь на одну ткань может быть несколько рулонов. И мне надо в селекте объеденить инфу из двух складов. Art, Diz, Col - как мне их показать?
...
Рейтинг: 0 / 0
21.04.2003, 11:22
    #32144887
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Группировка обязана быть по всем полям, кроме агрегатных функций.
Как, по-твоему, должен выглядеть результат запроса? Приведи пример.
НА мой взгляд, это даст то, что нужно:

select skl_tk.COD, skl_tk.ART, skl_tk.DIZ, skl_tk.COL, sum(skl_rul.kolvo) as NAL
from skl_tk, skl_rul
where skl_tk.cod=skl_rul.kod
group by skl_tk.COD, skl_tk.ART, skl_tk.DIZ, skl_tk.COL
order skl_tk.ART, skl_tk.DIZ, skl_tk.COL
...
Рейтинг: 0 / 0
21.04.2003, 11:28
    #32144899
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Roman Ignatiev
я думаю, ему просто нужно успокоится и просто прочитать, сколько можно писать одно и тоже? Ведь он даже не проверяет это. Зачем тогда писать? От него вопросы сыпятся как из рога изобилия, при том что все они, это начальный уровень, который везде описан. Так что...
...
Рейтинг: 0 / 0
21.04.2003, 11:52
    #32144928
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
StarWind - спасибо, прочитал и попробовал, работает... А про начальный уровень - я не спорю. И не пытаюсь кому-либо доказать, что я асс. Просто совет на будущее тебе - будь проще, чем выше подымаешься, тем громче падаешь...И поменьше высокомерия.....
...
Рейтинг: 0 / 0
21.04.2003, 11:56
    #32144933
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
у человека даже не развито чувство благодарности :)
...
Рейтинг: 0 / 0
21.04.2003, 12:08
    #32144951
Лекс[КВ]
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Тебе как - деньгами или руку поцеловать????????
"StarWind - спасибо, прочитал и попробовал, работает" - и кто из нас читать не умеет??????????
...
Рейтинг: 0 / 0
21.04.2003, 12:23
    #32144965
Roman Ignatiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисляемое поле
Ну со второго раза попробовать - уже прогресс
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]