powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Blob & Group by
24 сообщений из 24, страница 1 из 1
Blob & Group by
    #32140818
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую тебя, мудрый ALL!

Столкнулся тут, сижу - туплю... может кто подскажет?
Есть запрос типа

Select table1.un,Sum(table2.m),table1.prim
from бла-бла-бла
Group by un, prim

где поле prim - BLOB
Если его включать в Group by - ругается что Blob мол cannot be used as grouping field. Если не включать - ругается что every simple field must be in Group by...

поле в запросе нужное, печататься будет, очень хочется его там оставить...
Что делать-то?

Заранее благодарю.
...
Рейтинг: 0 / 0
Blob & Group by
    #32140880
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BLOB поля действительно нельзя включать в GROUP BY.

Если мое предположение о твоей схеме данных верно, то можно сделать так (для MS SQL)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT
  table1.un,
  Q.SumValue,
  table1.prim
FROM
  table1
  INNER JOIN
  (Select 
    table2.un,
    Sum(table2.m) AS SumValue
   from 
    table2 
   Group by table2.un) AS Q ON
  table1.un = Q.un
...
Рейтинг: 0 / 0
Blob & Group by
    #32141045
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все бы хорошо (идея хороша), но в INNER JOIN вставить select ну никак не выходит... Возможно из-за корявой реализации SQL в BDE, а может с руками что-то не то. :-(
В общем вопрос остается открытым...

Да, структура таблиц:

table1: table2:
un (integer) un (integer)
prim (blob) money ($)

Наверняка ведь все просто... Это-то и обидно.
...
Рейтинг: 0 / 0
Blob & Group by
    #32141072
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С какой базой то работаешь?

Я был лучшего представления о схеме данных. Ну ты подумай, проссумировал ты money с группировкой по un по таблице table2. Из 10 записей у тебя получилась одна. Так какое примечание из этих 10 записей тебе прицепить к 1 результирующей записи, а?
...
Рейтинг: 0 / 0
Blob & Group by
    #32141122
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
База - парадоксовская.
Полей в таблицах - несколько больше чем два, но к существу вопроса это не относилось, поэтому я и не стал расписывать...
А чем тебе не нравится структура?

table1 (заказы)
un - номер заказа (уникальный)
prim - примечания к заказу

table2 (оплаты)
un2 - номер оплаты (уникальный), в запросе неважен
un - номер заказа
money - сумма оплаты

отношение один ко многим (одному table1.un соответствует много table2.un)

Задача: выбрать из table1 заказы и примечания к ним, и из table2 сумму оплат по каждому из заказов

Просто как мычание... Но одним запросом почему-то я это сделать не могу...
...
Рейтинг: 0 / 0
Blob & Group by
    #32141143
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Mikena

Извиняюсь. :-) Мой последний пост был навеян неправильной трактовкой местонахождения поля коментарий. Еще, раз извиняюсь. Так что, мой первый запрос, то что доктор прописал. Вот тока не поддерживает BDE такие запросы.
...
Рейтинг: 0 / 0
Blob & Group by
    #32141168
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 pkarklin
Да ничего... :-)

Однако, неужели такую простую задачу через BDE не решить?!!!
...
Рейтинг: 0 / 0
Blob & Group by
    #32141404
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Однако, неужели такую простую задачу через BDE не решить?!!!

Ну не знаю я, что поддерживает, а что не поддерживает Local SQL от BDE.
...
Рейтинг: 0 / 0
Blob & Group by
    #32141582
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Plankin - просто для лучшего разития, вдруг понадобится

BDE - localsql.hlp

=====================
Боюсь, меня скоро бить будут за ответ
"Базы надо правильно проектировать!"

Что есть Ваше поле "примечание"? Это то место, куда любой юзер может записать все что ему захочется. Типа - "Хороший договор!", "Тут мы заработаем кучу денег", "Исполнено", "К исполнению до...".
Любопытен будет отбор по значению prim="Насрать"
Нормальный отбор может вестись только по формализованым параметрам. Вы должны формализовать все.
Поле "Примечание" у меня вызывает жуткую озлобленность. Это значит, что задачедатель даже примерно не представляет, что ему надо. И тут уже дело постановщика задач выявит действительно необходимые критерии отбора. А поскольку в нашей реальности, в 90% случаев, Постановщик задач=Программер=Архитектор, то Архитектор не должен слушать лепет "Сделайте нам Примечание, а мы будем туда писать, что хочем". Он ОБЯЗАН паратмеризировать критерии отбора. Поле "Прим." не имеет право на существование в базах данных!
...
Рейтинг: 0 / 0
Blob & Group by
    #32141670
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Cat2

Спасибо, но я знаю, где можно почитать справку по локал SQL. :-) Вот тока не читал и читать не буду читать. Мне хватит моих скромных знаний синтаксиса TSQL.

А на счет примечание, полностью с тобой согласен. Своим разработчикам не даю такие поля создавать. Разберись, что за аттрибуты должны быть, вместо того, что бы ляпать поле примечание. А то потом еще и полнотекстовый поиск по этим полям придеться вводить.
...
Рейтинг: 0 / 0
Blob & Group by
    #32141677
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не согласен
Примечание или правильнее комментарий, на мой взгляд имеет право на существование. Я не утверждаю что по нему нужно вести поиск, оно разумеется необязательно к заполнению, но оно должно быть. Все предусмотреть невозможно, да и не нужно. А некоторый комментарий к тем цифрам что в базе есть, очень часто необходим. Там скажем может быть объяснено, откуда такие цифры, в другом случае там вписано что-то другое. Но разумеется по этому полю поиск идти не должен
...
Рейтинг: 0 / 0
Blob & Group by
    #32141691
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pkarklin> Ну и ладушки .

StarWind> Может быть... На этапе проектирования. Если какая-то информация важна - ее надо формализовать. Ссылкой на документ, фамилией исполнителя, датой заполнения, отметкой о выполнении - в жизни критериев множество. Но возможности записывать анекдоты давать не надо.
...
Рейтинг: 0 / 0
Blob & Group by
    #32141708
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот например ситуация.
Сдается оборудование на ремонт. Есть, скажем так, стандартные причины отказа. (Оборудование довольно специфично). Но иногда хочется что-то дополнить, чтоб была понятна причина. Например, кто-то уронил комок снега в электролизер. (кто знаком с технологией производства алюминия, меня поймет :)) ) И это нужно указать на тему того что случилось. Куда его писать? Вот и есть ситуация где нужен комментарий
...
Рейтинг: 0 / 0
Blob & Group by
    #32141792
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Cat2 & pkarklin

Уважая ваш проффесионализм в проектировании баз данных, а также внимание к существу моего вопроса :-), все-таки позволю себе с вами не согласиться.
Существует куча ситуаций когда поле "примечание" (или, действительно, правильнее "комментарий") необходимо. Искать по этому полю естественно никто не собирается.
Например в данном случае это примечания к заказу в рекламное агентство. Для менеджера необходима распечатка заказов в которой наряду с информацией кто заказчик, полностью-ли оплачен заказ и пр. будет комментарий типа "поставить среди телепрограммы", "на первой полосе", "заказано 2 блока, но если мало места согласны на 1", "За прошлую рекламу они расплачивались полгода...". На основании этого он будет решать какую рекламу ставить, какую снимать, какую переносить...

Вот попробуйте формализовать эти комментарии, хотя они важны... И никакая жуткая озлобленность не поможет...
...
Рейтинг: 0 / 0
Blob & Group by
    #32141797
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
create table #table1(un integer, prim text) 
insert into #table1(un, prim) values( 1 ,'first')
insert into #table1(un, prim) values( 2 ,'second')

create table #table2(un2 integer, un integer,[money] money) 
insert into #table2(un2,un,[money]) values( 1 , 1 , 100 )
insert into #table2(un2,un,[money]) values( 2 , 1 , 200 )
insert into #table2(un2,un,[money]) values( 3 , 1 , 300 )
insert into #table2(un2,un,[money]) values( 4 , 1 , 400 )
insert into #table2(un2,un,[money]) values( 5 , 2 , 1000 )
insert into #table2(un2,un,[money]) values( 6 , 2 , 2000 )
insert into #table2(un2,un,[money]) values( 7 , 2 , 3000 )
 -- можно просто урезать комментарий
 
select t1.un,cast(t1.prim as varchar( 250 )),sum(t2.[Money])
from #table1 t1, #table2 t2
where t2.un = t1.un
group by t1.un,cast(t1.prim as varchar( 250 ))
 -- или попробовать подзапрос
 
select t1.un, t1.prim, t2.SumMoney 
from #table1 t1, (select un, sum([Money]) as SumMoney from #Table2 group by un) t2
where t2.un = t1.un

drop table #Table1
drop table #Table2
...
Рейтинг: 0 / 0
Blob & Group by
    #32141798
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по твоему существу, можно предложить следующую конструкцию (для строк подходит по крайней мере)

select table1.un,Sum(table2.m), min (table1.prim ) ... и далее
...
Рейтинг: 0 / 0
Blob & Group by
    #32141804
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вариант )
Код: plaintext
1.
2.
select t1.un, t1.prim,(select sum([Money]) as SumMoney from #Table2 t2 where t2.un = t1.un) 
from #table1 t1
...
Рейтинг: 0 / 0
Blob & Group by
    #32141810
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К автору топика, так всеж, поделись секретом, что за СУБД?
...
Рейтинг: 0 / 0
Blob & Group by
    #32142471
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не успел прочитать, что было написано за 16 апреля. Весь день думал над ответом Звездному Урагану

StarWind> Я бы все же сделал пополняемый юзерами справочник причин отказа. Конечно, тут будут проблемы. См. лучший (на мой взгляд) топик прошлого года. MS SQL-форум - "Убей двойника".
========
А как им удалось донести снег до электролизера? Бегом бежали?
=======
Вот еще. На заявление "У нас своя специфика", я всегда отвечаю.
- Она заключается в том, что присутствуют не все возможные случаи, а только некоторые из них
...
Рейтинг: 0 / 0
Blob & Group by
    #32142645
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikena
Формализовать можно все! Я не специалист по управлению рекламой, но я бы выжал все соки из задачедателей и построил формализованую систему.

Итак.
"За прошлую рекламу они расплачивались полгода..."
Делаем поле "Надежность клиента"
В это поле менеджер среднего (а может быть высшего) звена ставит градации надежности.
1. Надежен
2. Не совсем надежен
3. Не надежен
Это только пример. Градации могут быть любые. Но при обработке заказа оператор, увидев рядом с наименованием клиента что-то кроме "Надежен" обязан связаться с менеджером.

"полностью-ли оплачен заказ" - Должник должен быть выделен в списке клиентов - цветом, галкой, суммой задолжности - не важно. И для этого не нужно "прим". Нужен суммарный результат взаиморасчетов.

Должны быть поля
"Разместить в TВ" и подключенный к нему список каналов
"Разместить в радио" и подключенный к нему список станций
"Разместить в газету" и подключенный к нему список газет

Хотя нет, лучше так - список типов средств МИ и подключаемый к ним список наименований.

Для каждого вида МИ должна быть категория типа
1. лучшее место/время
...
N. Худшее место/время

И т.д. и т.п.
Разумеется, это только рыба. Я бы вытряс из задачедателя все требования и формализовал их.
=================
Не... Конечно, если все это в лом проектировать, то "прим" - рулез, однозначно.
...
Рейтинг: 0 / 0
Blob & Group by
    #32142720
StarWind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2
Так само собой он пополняем, но не всегда возможно да и не нужно туда писать абсолютно все. Те более что по этому полю поиска не будет , это просто некоторое уточнение, которое как есть будет перепечатано в отчет, в некоторый бланк заявки на ремонт.


А снег донести можно. Зимой в корпусах не жарко... А сколь поподет в ванну снега... комок или только половина... эффект будет одинаковый... Будет такая небольшая воронка :) Хотя предметно не изучал :)
...
Рейтинг: 0 / 0
Blob & Group by
    #32142743
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarWind. Убедил.
...
Рейтинг: 0 / 0
Blob & Group by
    #32142799
Mikena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо.
Задолбало меня пытаться сделать все одним запросом. Ну не понимает меня локалБДЕ и все тут... Сделал приблизительно как советовал LexusR.

2 Cat2
Cat2>Не... Конечно, если все это в лом проектировать, то "прим" - рулез, однозначно.
Ну наконец-то ты меня понял... :-) И проблема в общем-то не в том, что лень проектировать, а в том, что с периодичностью раз в месяц заказчик говорит: "А вот хотелось-бы мне ..." %$!!! Поэтому пускай будет "прим".
Да, насколько я понял ты тоже из Петрозаводска?
...
Рейтинг: 0 / 0
Blob & Group by
    #32143622
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikena. Это ты "тоже из Петрозаводска"
Где трудишься? Чо ваяешь? У меня тоже есть база, где постоянно появляются новые требования. Я завел текстовое поле, в которое юзеры быстро пишут новые показатели, а я быстро делаю соответствующие алгоритмы. Потом создаю нормальное поле и переношу в него данные.

Только вот не пойму. Зачем для "прим" использовать BLOB? Тебе что, базу арабы заказали? Это у них "жирность" шрифта несет важную смысловую и религиозную нагрузку.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Blob & Group by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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