Добавление столбца

patrickj
Дата: 21.12.2012 21:21:37
Имеет база данных:
Даны таблицы

1. Абоненты (*номер телефона, ФИО, Адрес) - хранит всю информацию об абонентах телефонной сети. Поле «Номер телефона» - первичный ключ.

2. Тариф (код города, Название города, цена за минуту) – хранит информацию о тарифах, где поле «код города» - первичный ключ.

3. Разговоры(*номер разговора, номер телефона, дата, код города, время) – хранит информацию о разговорах абонентов, где поле «номер разговора» - первичный ключ, а
поле «номер телефона» - внешний ключ, который ссылается на первичный ключ таблицы «Абоненты», поле «код города» - внешний ключ, который ссылается на первичный ключ
таблицы Тариф.

Задание. Разработать процедуру или функцию, которая по каждому абоненту(номеру телефона) выдает информацию о разговорах этого абонента за период времени с даты1 по дату2, например, в следующем виде:

Код
города
Название
города
Дата Время Цена
за мин
Сумма

Создал таблицы:
create table abonenti(Phone_number int,FIO char(30),adres char(30));
create table tarif(Kod_city int,name_city char(30),price_min float);
create table razgovori(N_razgovora int,Phone_number int,data datetime,Kod_city int,time float);



Написал такую процедуру:
delimiter //
create procedure inf(IN Phone_number1 int,IN data1 datetime, IN data2 datetime)
BEGIN
SELECT tarif.Kod_city,name_city,data,time,price_min from
tarif inner join razgovori on tarif.kod_city=razgovori.kod_city where
data>=data1 and data<=data2 and Phone_number1 = Phone_number;
END;
//
Delimiter ;

Фактически пол задачи решено. Осталось самое сложное. Нужно сделать так, чтобы в конце выводимой таблицы, был столбец сумм, каждая ячейка которого вычисляется как время * стоимость минуты. Собственно вопрос в этом и заключается, как это сделать?
trew
Дата: 21.12.2012 21:33:24
patrickj,

SELECT tarif.Kod_city,name_city,data,time,price_min, time*price_min as itog
from ...


не нужно называть поля зарезервированными словами mysql:data,time
patrickj
Дата: 21.12.2012 21:54:28
trew
patrickj,

SELECT tarif.Kod_city,name_city,data,time,price_min, time*price_min as itog
from ...


не нужно называть поля зарезервированными словами mysql:data,time

Я не нашел как выделать код mysql, поэтому выделал как PL/SQL.
В Mysql с такими именами работает.
Запросы выполняются.
konst55
Дата: 22.12.2012 19:42:47
а куда процедура писать будет? во временную таблицу?