Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





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


8-1147940602
Белый Орёл
2006-05-18 12:23
2007.01.07
Быстрая перемотка DVD


4-1156278217
Так себе
2006-08-23 00:23
2007.01.07
Минимальное оконное приложение на Delphi 1.0 с использованием Win


2-1166452299
i-am-vladko
2006-12-18 17:31
2007.01.07
Image на компоненте


2-1166355278
ezorcist
2006-12-17 14:34
2007.01.07
Вычисление интеграла.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский