powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле
18 сообщений из 18, страница 1 из 1
Вычисляемое поле
    #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
Вычисляемое поле
    #32144724
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вычисляемое поле... а ты себе представил как будет выглядеть таблица? Я честно говоря слабо...

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

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

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

Вот и все

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

По поводу Group By - я в курсе как он используется!!! Я заранее попросил прощенья за корявость вопроса, и видимо не напрасно.... Я написал select для того, чтобы объяснить что мне надо получить, а не для того чтобы мне написали какие книги мне читать....Кто может помочь - помогите правильным селектом, а не списком книг для чтения!!!! Книг у меня и так хватает...
Заранее благодарен.
...
Рейтинг: 0 / 0
Вычисляемое поле
    #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
Вычисляемое поле
    #32144798
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Млин вы здесь все что ли такие умные?????
Если тебе задают вопрос, то какого отвечать типо "читайте книги"????? А на кой тогда форум???? Закройте его и напишите типо того - " Про всё написанно в книгах, а нам влом отвечать вам ламерам".....
И по поводу твоего селекта group by [список полей skl_tk], skl_rul.cod - и что он просуммирует????????????
Млин, и просьба спецом для StarWind - я уж как нибудь без твоих советов обойдусь!!!! Мне не 15 лет, чтобы выслушивать твой трёп, мальчик!!!!!! А по поводу самомнения - не я, а Вы, любезнейший, превозносите себя выше уровня своего.
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144803
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорошо, базара нет :)
жизнь научит
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144805
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarWind - млин, коль я задал вопрос, то наверное не стыжусь признать того, что не знаю!!!! Если можешь помочь - то помоги реально (можно и материально)).
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144842
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебе и помогли. Использование агрегатных функций хорошо описано в любом руководстве по SQL, там же можно прочитать, и что просуммируется, и как употреблять group by
...
Рейтинг: 0 / 0
Вычисляемое поле
    #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
Вычисляемое поле
    #32144860
Vagoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После ткой дрки и нпсать что-то страшно...

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

Перенесите их до агрегатных полей. Правда, не уверен, что они покажут то что надо...
...
Рейтинг: 0 / 0
Вычисляемое поле
    #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
Вычисляемое поле
    #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
Вычисляемое поле
    #32144899
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Ignatiev
я думаю, ему просто нужно успокоится и просто прочитать, сколько можно писать одно и тоже? Ведь он даже не проверяет это. Зачем тогда писать? От него вопросы сыпятся как из рога изобилия, при том что все они, это начальный уровень, который везде описан. Так что...
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144928
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
StarWind - спасибо, прочитал и попробовал, работает... А про начальный уровень - я не спорю. И не пытаюсь кому-либо доказать, что я асс. Просто совет на будущее тебе - будь проще, чем выше подымаешься, тем громче падаешь...И поменьше высокомерия.....
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144933
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у человека даже не развито чувство благодарности :)
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144951
Лекс[КВ]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тебе как - деньгами или руку поцеловать????????
"StarWind - спасибо, прочитал и попробовал, работает" - и кто из нас читать не умеет??????????
...
Рейтинг: 0 / 0
Вычисляемое поле
    #32144965
Roman Ignatiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну со второго раза попробовать - уже прогресс
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисляемое поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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