Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> select Sum(count) from Table where _name='fedor', и в случае, если fedor-a там не окажется 
:(
    Опции темы
Гость_Vasya
Дата 26.9.2003, 14:22 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Привет!

Есть запрос типа:

select Sum(count) from Table where _name='fedor'

и в случае, если fedor-a там не окажется, надо вернуть 0(ноль).

Как это реализовать?
Спасибо!
  Вверх
Vit
Дата 27.9.2003, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



"count" - у вас это название поля? Если да, то добавить ещё одну запись вида

NullField 0

и квери переделать:

select Sum(count) from Table where _name='fedor' or _name='NullField'



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
x77
Дата 28.9.2003, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



кгхм. может я чего не врубаюсь. сумма то нафиха? почему не написать

select Count (*) where _name = 'fedor'?


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 28.9.2003, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



З.Ы.
а count в качестве имени поля - это теперь так модно? smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vit
Дата 29.9.2003, 04:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(x77 @ 28.9.2003, 12:38)
З.Ы.
а count в качестве имени поля - это теперь так модно? smile.gif

Видимо да, я тоже смотрел на эту кверю несколько офигевши, пока до меня не начало доходить, что по-видимому "count" это название поля...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Cashey
Дата 29.9.2003, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата
Vit Дата 29.9.2003, 01:16
QUOTE (x77 @ 28.9.2003, 12:38)
З.Ы.
а count в качестве имени поля - это теперь так модно? 

Видимо да, я тоже смотрел на эту кверю несколько офигевши, пока до меня не начало доходить, что по-видимому "count" это название поля... 

А вы не задумывались, что может требуется опредилить сумму количеств записей, где _name='fedor', правда в этом случае запрос просто элементарный.
Код
select Sum(count(*)) from Table where _name='fedor'




--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
x77
Дата 29.9.2003, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



2 Cashey:

Код
select Sum(count(*)) from Table where _name='fedor'


Count (*) всегда вернёт одно число. понимаешь? не набор данных в десять строк, а всего одно число одной строкой. я боюсь тебя удивить, но сумма этого числа и будет равна этому числу. вот если бы он делал группировку, тогда да, но по запросу я этого нифига не наблюдаю.

Это сообщение отредактировал(а) x77 - 29.9.2003, 09:51


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cashey
Дата 29.9.2003, 10:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата
А вы не задумывались, что может требуется опредилить сумму количеств записей, где _name='fedor', правда в этом случае запрос просто элементарный.
CODE 
select Sum(count(*)) from Table where _name='fedor'

Прошу прощения я тут вообще фигню написал, даже стыдно, что кто-то успел прочитать. Да удалять уже поздно. Все забудьте smile.gif.
Если count - это название поля, то проблема может быть в том, что select sum() в случае если нет записей удовлетворяющих условию вернет пустоту (не ноль, не false, а пустоту) и ничего с этим не поделаешь, поэтому приходится использовать простейший скрипт. На Фоксе он выглятет так:
Код
PUBLIC ARRAY a[1]
a[1]=0
select Sum(count) from Table where _name='fedor'  INTO ARRAY a
.
и если федора там нет то a[1] = 0.
А если все-таки нужна сумма количеств записей то тогда так:
Код
SELECT sum((field_name + 1) /2) from Table where <>


Это сообщение отредактировал(а) Cashey - 29.9.2003, 11:04


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
x77
Дата 29.9.2003, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



знать бы ещё, что у него за субд, далеко не всt умеют работать с массивами и использовать анонимные блоки. если проблема только с именем, то это можно обойти:
Код
select Sum(T."count") from Table T where T."_name"='fedor'


Это сообщение отредактировал(а) x77 - 29.9.2003, 10:57


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cashey
Дата 29.9.2003, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата
CODE 
select Sum(T."count") from Table T where T."_name"='fedor' 

Интересно, а на какой субд пройдет этот код, на мне известных он может выглядет только в такой редакции
Код
select Sum(T.count) from  T where T._name='fedor'

Вопрос то в другом count это имя поля или неумелая попытка вставить ф-цию count. Соответсвенно и задачи меняются.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
m@kxus
Дата 29.9.2003, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 110
Регистрация: 20.2.2003
Где: Estonia

Репутация: нет
Всего: 2



Oracle: если count - название поля, то select nvl(sum(count),0) from from Table where _name='fedor' вернёт 0, даже если фёдора нет


PM MAIL WWW ICQ AOL YIM MSN   Вверх
x77
Дата 29.9.2003, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



2 Cashey:
Цитата
Интересно, а на какой субд пройдет этот код, на мне известных он может выглядет только в такой редакции...


на Interbase и MSSQL пройдёт, на oracle - не помню. под рукой его нет, так что врать не буду. для BDE это вообще стандартный синтаксис.

мне кажется, у него есть как минимум два поля: _name, в котором хранятся имена, и count, в котором храниться кол-во этих имён. требуется посчитать сумму колличеств определённого имени.

а вообще, пора бы уже и автора послушать smile.gif

Это сообщение отредактировал(а) x77 - 29.9.2003, 11:30


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cashey
Дата 29.9.2003, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Вот как раз в BDE он и не пройдет. Посмотри внимательно
Цитата
from Table T where

Хотя это все фигня, я просто к тому, что язык (SQL) он вроде бы один, а его диалекты разнятся дай боже. Из-за этого тяжело предложить код который можно просто скопировать и использовать, короче
Цитата
а вообще, пора бы уже и автора послушать 



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
x77
Дата 29.9.2003, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



почему не пройдёт? пройдёт.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Cashey
Дата 29.9.2003, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Запустил в SQL Explorer (Delphi) такой код
Код
select Sum(ucet."summa") from Table ucet where ucet."os"='в'
... ругается, съедает только так
Код
select Sum(ucet."summa") from  ucet where ucet."os"='в'
, хотя вот так тоже ест, но выглядет посимпатичней
Код
select Sum(ucet.summa) from  ucet where ucet.os='в'
Если бы гость Вася соблюдал ненормативные правила корректности написания программ этой дисскусии можно было избежать.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0890 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.