Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2011, 13:42   #1
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
Лампочка SQL-запрос с вычислением поля

Сразу извиняюсь за огромность описания!

Есть 4 таблицы

Таблица1 - Количество наговоренных минут : Pay
Поля
PayID AutoInc
PayCallerID Int ID абонента
PayCountMin Real Количество минут

Заполнение
1 1 100
2 2 170
3 3 250

Таблица2 - Абоненты : Caller
Поля
CallerID AutoInc
CallerFIO String ФИО абонента
CallerTarPhID Int Вид тарифа для телефона
CallerTarIntID Int Вид тарифа для интернета

Заполнение
1 ИИИ 1 1
2 ССС 2 2
3 ППП 3 3

Таблица3 - Тарифы для интернета : TarInt
Поля
TarIntID AutoInc
TarIntName String Название тарифа
TarIntPay Real Цена тарифа

Заполнение
1 Q 100
2 W 200
3 E 300

Таблица4 - Тарифы для телефона : TarPh
Поля
TarPhID AutoInc
TarPhName String Название тарифа
TarPhPoint Real Стоимость предоставления точки доступа
TarPhCountMinLim Real Количество минут по тарифу
TarPhPayCML Real Стоимость количества минут по тарифу
TarPhPriceMin Real Цена минуты сверх лимита

Заполнение
1 Повременный 160 - - 0,36
2 Социальный 160 150 37 0,42
3 Безлимитный 160 - 220 -

ПОЛУЧИТЬ:
С помощью SQL-запроса
Вывести
ФИОабонента Итоговая сумма оплаты(Цена за интернет + сумма за телефон (с учетом минут и тарифа))


Для 1го абонента:
Тариф Повременный + Интернет, в итоге получается 160+100*0,36+100 = 296

Для 2го абонента:
Тариф Социальный + Интернет, в итоге получается 160+37+(170-150)*0,42+200 = 405,4 те наговорил 20мин сверх лимита
Если бы меньше наговорил допустим 140 тогда 160+37+200=397

Для 3го абонента:
Тариф Безлимитный + Интернет, в итоге получается 160+220+300 = 680

я набросал
IF-условия

IF (TarPhID=1) TarIntPay+TarPhPoint+TarPhPriceMin* PayCountMin;

IF (TarPhID=2)
IF (PayCountMin<=150)
TarIntPay+TarPhPoint+TarPhPayCML
ELSE TarIntPay+TarPhPoint+TarPhPayCML+(P ayCountMin-TarPhCountMinLim)*TarPhPriceMin;

IF (TarPhID=3) TarIntPay+TarPhPoint+TarPhPayCML

ИТОГ:

Q 296
W 405.4
E 680

PS помогите это реализовать одним запросом и с просчетом, пожалуйста
lyle_200490 вне форума Ответить с цитированием
Старый 03.04.2011, 15:43   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Желательно информировать об используемой СУБД.
SQL для некоторых моментов может отличаться в разных СУБД.
Прик вне форума Ответить с цитированием
Старый 03.04.2011, 15:52   #3
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию

MySQL
5.0.67-community-nt
lyle_200490 вне форума Ответить с цитированием
Старый 03.04.2011, 15:59   #4
lyle_200490
Пользователь
 
Регистрация: 19.11.2010
Сообщений: 21
По умолчанию

Часть запроса написал считает только Стоимость предоставления точки доступа(телефон)+Сумма по интернету

Код:
select sum(s.TarPhPoint)+sum(t.TarIntPay)
from tarintlist t, callerlist c, tarphlist s
WHERE
t.TIID = c.CallerTarInt AND
s.TPID = c.CallerTarPh AND
c.CallerID = 'Код человека'
Вот осталось с наговоренными минутами разобраться и не могу.



________
Код SQL запроса желательно оформлять тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Модератор.

Последний раз редактировалось Serge_Bliznykov; 03.04.2011 в 17:12.
lyle_200490 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL-запрос с вычислением поля lyle_200490 БД в Delphi 1 03.04.2011 13:41
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL запрос требует ненужные поля alikon1 БД в Delphi 5 12.10.2007 09:50
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15