Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Blob & Group by / 24 сообщений из 24, страница 1 из 1
15.04.2003, 12:25
    #32140818
Mikena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
Приветствую тебя, мудрый 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
15.04.2003, 12:59
    #32140880
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
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
15.04.2003, 14:11
    #32141045
Mikena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
Все бы хорошо (идея хороша), но в INNER JOIN вставить select ну никак не выходит... Возможно из-за корявой реализации SQL в BDE, а может с руками что-то не то. :-(
В общем вопрос остается открытым...

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

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

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

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

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

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

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

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

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

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

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

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

BDE - localsql.hlp

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

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

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

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

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

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

Вот попробуйте формализовать эти комментарии, хотя они важны... И никакая жуткая озлобленность не поможет...
...
Рейтинг: 0 / 0
16.04.2003, 10:37
    #32141797
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
Код: 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
16.04.2003, 10:39
    #32141798
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
а по твоему существу, можно предложить следующую конструкцию (для строк подходит по крайней мере)

select table1.un,Sum(table2.m), min (table1.prim ) ... и далее
...
Рейтинг: 0 / 0
16.04.2003, 10:42
    #32141804
LexusR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
еще вариант )
Код: 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
16.04.2003, 10:46
    #32141810
StarWind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
К автору топика, так всеж, поделись секретом, что за СУБД?
...
Рейтинг: 0 / 0
16.04.2003, 17:14
    #32142471
Cat2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Blob & Group by
Не успел прочитать, что было написано за 16 апреля. Весь день думал над ответом Звездному Урагану

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

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

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

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

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

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

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


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

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

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


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