Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.055 c
15-1166183512
Tupoy
2006-12-15 14:51
2007.01.07
Help для Delphi


15-1166092041
Vlad Oshin
2006-12-14 13:27
2007.01.07
MySql и/или MSSQL Логи. Как делать?


15-1166104582
ArtemESC
2006-12-14 16:56
2007.01.07
Как перевести на русский название произведения...


15-1166418362
sl8er
2006-12-18 08:06
2007.01.07
StrPos в Oracle


2-1166385020
apv1989
2006-12-17 22:50
2007.01.07
все, наверное тут привыкли к подобным вопросам, но...




   Наверх