Текущий архив: 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.47 MB
Время: 0.008 c