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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SQL- запрос к IB, помогите с запросом 
:(
    Опции темы
Li
Дата 4.8.2004, 23:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Пожалуйста, помогите, что здесь можно придумать?
Есть таблица Tab1(ID as Integer, Sum as Float, NDS as Char)
Необходимо выбрать для каждого ID значение суммы с НДС, т.е.
result = Sum*1.2, если NDS = 'y'
result = Sum, если NDS = 'n'
Сделать это нужно одним запросом Select и без изменения структуры таблицы.
Подскажите, пожалуйста, возможно ли это в IB.
Спасибо!
  Вверх
<Spawn>
Дата 5.8.2004, 05:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

Репутация: 1
Всего: 64



Код
SELECT SUM * 1.2
  FROM Tab1
 WHERE NDS = 'Y'
UNION
SELECT SUM
  FROM Tab1
 WHERE NDS = 'N'

Добавлено @ 05:02
Возможно, в IB тоже есть аналог UNION ALL, для того чтобы не были исключены дублированые записи - с этим сам разберись.

Это сообщение отредактировал(а) <Spawn> - 5.8.2004, 05:02


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Li
Дата 5.8.2004, 09:42 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











можно ли это сделать без union?
очень желательно
  Вверх
Ateh
Дата 5.8.2004, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, можно получить результат без union!
Я не спец в IB, но SQL-запрос можно сделать подобным образом:

SELECT Table.id, IIf([Table]![nds]="y ",[Table]![sum]*1.2, [Table]![sum]) AS Выражение1, nds
FROM [Table];

P.S.:
IIf (условие, если True, если False)
PM MAIL   Вверх
gemoglobin
Дата 5.8.2004, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



можно через хранимую процедуру типа

for
select ...
from ...
where ...
into
do
begin
тут проверяешь и выдаешь результат
suspend;
end


хранимые процедуры работают быстро за это не волнуйся
PM MAIL   Вверх
<Spawn>
Дата 5.8.2004, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

Репутация: 1
Всего: 64



Чем тебе обьединение множеств не навится?


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Гость_Владимир
Дата 11.10.2004, 03:17 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Надо в таблицу НДС заносить не буковками Y/N а числом, и жизнь станет легче и веселей.
  Вверх
x77
Дата 11.10.2004, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



совершенно верно. 1.2 вместо 'Y' и 1.0 вместо 'N'. после этого запрос будет безо всяких юнионов, хранимок и пр., типа select SUM * NDS


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1251
Регистрация: 16.10.2004
Где: Новый Уренгой

Репутация: 7
Всего: 44



Неплохо бы версию сервера указать!
Для IB: до версии 7.5 только как указано выше
Для FB: есть спец. case
А вообще-то НДС надо числом хранить. разные ставки встречаются(10%, 18%, 20%, 16.67% + импортные материалы вообще по таможне сколько поставит)


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

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

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

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

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

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


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

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

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

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

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


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

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


 




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


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

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