Это учебная база
Вот скрипт для ее создания
[spoiler]
create database sale; # создание базы данных - продажи
use sale; # указываем базу данных , для добавления в нее данных и изменения
# создаем таблицу платежей
/*первое поле `num` - это порядковый номер платежа, оно должно быть уникальным, не должно быть пустым;
`2`-е поле paydate - дата продажи, не должна быть пустой, обязательна к заполению,
по умолчанию подставляется текущая дата и время, которое берется из системных значений
компьютера, на котором работает данная база данных;
поле receiver - получатель платежа, не должно иметь пустого значения;
поле amount - здесь вводится сумма платежа, поле не должно быть пустым, оно имеет в сумме
`10` разрядов,из них:
`2`-разряда после запятой,
`8`-разрядов цифр перед запятой разрядов"*/
create table payments(num INT not null,
paydate datetime not null default current_timestamp,
receiver int not null,
amount decimal(10,2) not null,
primary key(num),
unique(num) );
# смотрим описание таблицы
desc payments;
# наполняем таблицу
insert into payments (num,paydate,receiver,amount)
values(1,'2016-10-30 15:00:00',1,35000.5),
(2,'2017-11-30 15:25:00',2,25000.5),
(3,'2015-11-30 10:25:00',2,15000.5),
(4,'2014-11-30 11:25:00',3,10000.5),
(5,'2014-11-30 11:25:00',3,10000.5);
# используем, при заполнении таблицы, значение по умолчанию для поля paydate
# поэтому это поле и значения для него опустим из параметров
insert into payments (num,receiver,amount)
values(6,4,1000.5),
(7,2,500.5),
(8,3,17000.5),
(9,1,100.5),
(10,4,15000.5),
(11,4,35000.5),
(12,2,45000.5),
(13,3,55000.5),
(14,4,85000.5),
(15,4,85000.5),
(16,4,85000.5);
# производим выборку всех данных из таблицы payments
select * from payments;
# создаем таблицу получателей
/*первое поле num - это порядковый номер получателя, оно должно быть уникальным, не должно быть пустым;
`name` - так как это слово зарезервировано, обозначим его обратными кавычками,
обозначим максимальный размер хранимой строки, Указание правильного размера поля таблицы,
может значительно сэкономить занимаемую ею память.
`VARCHAR` - это тип данных - строковые данные переменной длины,сделаем данное поле индексируемым и уникальным
и назначим данному полю первичный ключ;
*/
create table receivers( num INT not null,
`name` Varchar(255) not null,
PRIMARY KEY(`name`), INDEX (`name`), UNIQUE (name));
# смотрим описание таблицы
desc receivers;
# наполняем таблицу receivers
insert into receivers (num,`name`)
values(1,'ВЭБ'),
(2,'АБСОЛЮТ'),
(3,'ФОНД СОРЕСА'),
(4,'ВАЛЮТНЫЙ РЕЗЕРВНЫЙ ФОНД');
# производим выборку всех данных из таблицы receivers
select * from receivers;
# Создаем таблицу клиентов
create table clients (num INT,FamilyN Varchar(255), FirstN Varchar(255), FatherN Varchar(255),
PRIMARY KEY(`num`), INDEX (`num`), UNIQUE (num));
# смотрим описание таблицы
desc clients;
# наполняем таблицу clients
insert into clients (num, familyn,firstn,fathern)
values(1,'Петровский','Павел','Анатольевич'),
(2,'Семенова','Алла','Анатольевна'),
(3,'Пинчук','Владислав','Павлович'),
(4,'Сергеенко','Павел','Петрович'),
(5,'Савич','Елена','Александровна'),
(6,'Осипов','Андрей','Александрович'),
(7,'Мойсейчик','Анна','Антоновна'),
(8,'Александровский','Сергей','Викторович'),
(9,'Пушкин','Александр','Викторович');
# производим выборку всех данных из таблицы receivers
select * from clients;
[/spoiler]
Задача такаяСоставьте запрос, который будет получать из таблицы платежей номер, величину платежа, дату и имя получателя, для тех платежей, у которых величина больше средней величины платежа в базе в четыре и более раза.
Написал так и получил ошибку
[spoiler]
mysql> select num as 'номер платежа', amount as 'Величина платежа', paydate as дата, name as 'имя получателя' from payments, receivers rs
-> where receiver = rs.num and amount >= (select avg(amount) from payments)*4;
ERROR 1052 (23000): Column 'num' in field list is ambiguous
[/spoiler]
В таблицах payments , receivers - есть поля с одинаковыми названиями num.
Как же в этом запросе указать, что надо искать.
Пробовал так
Select num.payments ......
Но все равно ошибка.
Поясниет пожайлуста как исправить ?