Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.07;
Скачать: CL | DM;

Вниз

Подсчёт наименований   Найти похожие ветки 

 
vitv ©   (2006-12-17 12:20) [0]

Есть таблица в которой храняться наименования:
плита
холодильник
утюг
плита
холодильник
утюг
Нужно посчитать сколько  каждого наименовния.
Так можно:
create procedure my_proc returns(mytovar string,utug integer, plita integer......)
as
begin
for select tovar from table
into :mytovar
do
begin
if (mytovar="утюг") then utug=+1
....
....
....


 
sniknik ©   (2006-12-17 13:42) [1]

SELECT наименования, Count(*) FROM Есть таблица
GROUP BY наименования

p.s. таблица неправильная, если уж так повторяются названия то делают 2 таблицы, одну справочник имен (в ней может быть не только имя но и др. информация по типу товара) и вторую непосредственно по товарам где вместо названий ссылки на них. т.е. например номер 1, или 2, 3 т.д. а в справочнике имен записи с id 1 соответствует "плита", 2 - "холодильник" и т.д.
полную инфу о записи тогда получают обьеденением этих таблиц. кроме того что база будет меньше размером это еще и быстрее работает... + при ошибке в названии исправлять придется только в одном месте.
поищи в общем статьи про нормализацию баз.


 
VitV ©   (2006-12-17 14:40) [2]

Сделал вот так:
select utug,count(utug) from tovary
group by utug
ругается на синтаксис(Интербэйс 6.1)


 
Плохиш ©   (2006-12-17 15:35) [3]


> VitV ©   (17.12.06 14:40) [2]

> ругается на синтаксис(Интербэйс 6.1)

Значит пора уже прочитать о синтаксисе используемой бд...


 
vitv ©   (2006-12-17 16:01) [4]

Уже читаю :)


 
FIL-23 ©   (2006-12-17 16:56) [5]

я что то не могу понять ты чем пользуешься (таблица или массив)

делается это так

while not table1.eof do // пока не конец таблицы то...
begin
if table1.fieldbyname("tovar").asstring="utug" then utug:=utug+1;
table1.next;
end;

в итоге тебе выведется количество твоих уьюгов.
этот пример для делфяка (если ты конечно в нем пишишь :) )


 
Sergey Masloff   (2006-12-17 17:47) [6]

FIL-23 ©   (17.12.06 16:56) [5]
Никогда так не делаете (если ваш код кто-то когда-то может увидеть) и уж точно не советуйте так делать. Даже объяснять не буду почему - судя по всему, рано (или наоборот поздно)


 
vitv ©   (2006-12-18 10:08) [7]


> я что то не могу понять ты чем пользуешься (таблица или
> массив)
>
> делается это так
>
> while not table1.eof do // пока не конец таблицы то...
> begin
> if table1.fieldbyname("tovar").asstring="utug" then utug:
> =utug+1;
> table1.next;
> end;
>
> в итоге тебе выведется количество твоих уьюгов.
> этот пример для делфяка (если ты конечно в нем пишишь :)
> )
>

Я хочу сделать хранимой процедурой.


 
Sergey13 ©   (2006-12-18 10:12) [8]

> Я хочу сделать хранимой процедурой.

Если у тебя будет несколько сотен (тысяч) разных наименований - прикинь какова будет твоя процедура.
Тебе уже ответили в
> [1] sniknik ©   (17.12.06 13:42)


 
VitV ©   (2006-12-20 12:29) [9]


> Никогда так не делаете (если ваш код кто-то когда-то может
> увидеть) и уж точно не советуйте так делать. Даже объяснять
> не буду почему - судя по всему, рано (или наоборот поздно)
>

Объясни, если не сложно.


 
VitV ©   (2006-12-20 12:43) [10]

Я сделал как вы советывали, просто мне интересно почему :). Я думал сделать так, но мне что то  подсказывало, что это "не есть гуд" :)))


 
Anatoly Podgoretsky ©   (2006-12-20 12:56) [11]

> VitV  (20.12.2006 12:43:10)  [10]

Читать книги по базам данных



Страницы: 1 вся ветка

Текущий архив: 2007.01.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.063 c
2-1166599055
kukuikar
2006-12-20 10:17
2007.01.07
Чем быстрее сравнить и скопировать файлы


15-1166364444
Ricko
2006-12-17 17:07
2007.01.07
Апокалипсис


15-1166392740
AntiUser
2006-12-18 00:59
2007.01.07
Если бы все поумнели...


2-1166214377
FIL-23
2006-12-15 23:26
2007.01.07
как узнать какая по счету линия в memo


6-1155398565
SamProf
2006-08-12 20:02
2007.01.07
Connection reset by peer