Форум программистов, компьютерный форум, киберфорум
Firebird/InterBase
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 17

Как написать запрос на Firebird, Interbase 2009

15.10.2016, 01:28. Показов 995. Ответов 2

Студворк — интернет-сервис помощи студентам
В бд есть таблицы:

Income-накладные прихода: Income_id,Partn_id, Goods_id, Price, Qty, taxable(товар платит или нет ндс)

Partn-поставщики: Partn_id, vatpayer

Vatpayable-Моя фирма обагается или нет ндс-ом: vatpayable=0 or 1.

Задача: реализовать запрос такого типа:

Delphi
1
2
3
4
5
6
7
8
If моя фирма не плательщик ндс-налога(vat) then vat:=0  
Else begin
   if  поставщик ндс-плательщик then begin
      if Goods.taxable=0 then vat:=0  //товар не платит ндс
      else vat:=price*18/118;           //товар платит ндс
   end
  else vat:=0;
end
На Firebird выполняется внутренная часть этого запроса

SQL
1
2
3
4
5
6
IF  поставщик ндс-плательщик THEN 
BEGIN
   IF Goods.taxable=0 THEN vat"=0
   else vat:=price*18/118;
end
else vat:=0;
и правильно возврашает результат.

Firebird 2.5:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT Goods_Id, income_id, Qty, Price, vatpayer, Price*Qty AS summa,
 
CASE WHEN Vatpayer=1 THEN 
   CASE 
     WHEN taxable=0 THEN 0
     WHEN taxable=1 THEN Price*18/118
   END  
 ELSE 0
 END AS Vat
 
FROM Income, partn
WHERE Income.part_id=partn.part_id
GROUP BY Goods_id, Income_id, Qty, Price, vatpayer, Summa,Vat
но как связывать эту, наружную часть запроса:

SQL
1
2
3
4
IF моя фирма не плательщик ндс-налога(vat) THEN vat:=0  
   ELSE BEGIN
   ....
   END;
с внутренным, если таблица VatPayable, где записано моя фирма платит или нет ндс (VatPayable=0 or =1), никак не связан с таблицами Income и Partn с помощью ключей?

И второй вопрос: тот-же самый запрос(внутренная часть) выдаёт разные ошибки на Interbase 2009:

1) Column Unknown если в group by написан Summa,Vat,

2) если без ных,тогда- Invalid column reference.

3) ещё ругается на price*18/118 expression evaluation not supported
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.10.2016, 01:28
Ответы с готовыми решениями:

Firebird как написать запрос со множеством полей
Как построить запрос у которого число полей зависит от содержимого другой таблицы (т.е. неограниченное количество). Дано: Таблицы...

FireBird + Interbase&Firebird Development Studio
Установил FireBird 2.5 SuperClassic и Interbase&Firebird Development Studio. Зашел в студию, создал таблицу, пытаюсь создать БД - выдает...

Разбиение строки в FireBird - Firebird/InterBase
Продолжая тему отсюда: https://www.cyberforum.ru/firebird/thread309236.html :wall: Есть поле типа VARCHAR, в котором хранятся данные вида...

2
86 / 86 / 24
Регистрация: 27.02.2010
Сообщений: 397
15.10.2016, 17:45
Насколько понял, как вариант про "внутреннюю часть" использовать темповые таблицы (в FB 2.5 вроде это все есть) или встроенный подзапрос
0
0 / 0 / 0
Регистрация: 26.01.2015
Сообщений: 17
15.10.2016, 18:37  [ТС]
В Firebird 2.5 решил так и правильно работает:

SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT Goods_Id, income_id, Qty, Price, vatpayer, Nakl.nakl_id, Price*Qty AS summa,
CASE WHEN vatpayable=1 THEN         --если моя фирма платит ндс
  CASE WHEN Vatpayer=1 THEN          --если поставщик платит ндс 
  CASE 
    WHEN taxable=0 THEN 0                    --если товар не платит ндс 
    WHEN taxable=1 THEN Price*18/118         --если товар платит ндс
  END  
ELSE 0
  END
ELSE 0
END AS Vat
 
FROM Income, partn, nakl
WHERE Income.part_id=partn.part_id AND nakl. nakl_id=:nakl_id
GROUP BY Goods_id, Income_id, Qty, Price, vatpayer, nakl_id, summa, vatpayable

А в Interbase 2009-никак! ругается на price*18/118 "expression evaluation not supported"! Наверно IB не умеет группировку по выражению. А как обойти не знаю!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2016, 18:37
Помогаю со студенческими работами здесь

Как базу от InterBase с ODS 11.2 прицепить к FireBird?
Доброго времени суток. Проблема следующая: Есть программа (без исходников) для работы с InterBase базой, так как он платен,...

Как открыть базу данных (InterBase, .GDB) без установки сервера FireBird?
есть программа написанная на Delphi 7, в ней открывается база данных через InterBase компоненты. можно ли сделать так, что бы...

ODBC-драйвер для InterBase 2009
здравствуйте! подскажите, пожалуйста, реально ли найти сабж и при этом не расстаться с круглой суммой денег?

ArgumentOutOfRangeException при подключении к Interbase 2009
Возникла необходимость с подключением к уже созданной базе interbase. Установил NETProvider-3.0.2.0, DDEXProvider-3.0.0.0. Перечитал кучу...

Firebird конфликт с interbase
Добрый день. вот такая незадача... ранее уставновила interbase, затем удалила и забыла про него. сейчас же установила firebird, но когда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru