|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
03.04.2011, 13:42 | #1 |
Пользователь
Регистрация: 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 помогите это реализовать одним запросом и с просчетом, пожалуйста |
03.04.2011, 15:43 | #2 |
Форумчанин
Регистрация: 08.09.2010
Сообщений: 880
|
Желательно информировать об используемой СУБД.
SQL для некоторых моментов может отличаться в разных СУБД. |
03.04.2011, 15:52 | #3 |
Пользователь
Регистрация: 19.11.2010
Сообщений: 21
|
MySQL
5.0.67-community-nt |
03.04.2011, 15:59 | #4 |
Пользователь
Регистрация: 19.11.2010
Сообщений: 21
|
Часть запроса написал считает только Стоимость предоставления точки доступа(телефон)+Сумма по интернету
Код:
________ Код SQL запроса желательно оформлять тегом [CODE]..[/СODE] (это кнопочка с решёточкой #) Модератор. Последний раз редактировалось Serge_Bliznykov; 03.04.2011 в 17:12. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |