Я был на этом запросе MySQL в течение 2 дней подряд. Это сценарий:
У меня есть две таблицы: пользователи и учетные записи. Там структуры ниже:
$sql="create table if not exists users (
id bigint(20) not null auto_increment,
username varchar(255) not null,
password varchar(255) not null,
email varchar(255),
phone varchar(40),
PRIMARY KEY (id, username))";
$sql="create table if not exists accounts (
id int not null auto_increment, primary key(id),
userid int(11) not null,
type varchar(20) not null, <----- we have two types: bill and pay ------>
amount varchar(255) not null,
date_paid datetime not null)";
Что я хочу сделать:
Я хочу выбрать номера телефонов людей, которым более 10 000, и которые были оплачены или выставлены счета за последние 14 дней или более.
Как мы находим людей, которые должны:
Когда вам выставлен счет (при условии 50 000), в БД добавляется строка, например:
insert into accounts (id, userid, type, amount, date_paid) values ('', 'id of the person', 'OWE', 50000, '$date');
Когда человек платит (предположим, 20 000), также вставляется строка:
insert into accounts (id, userid, type, amount, date_paid) values ('', 'id of the person', 'PAY', 20000, '$date');
Чтобы получить сумму, причитающуюся человеку:
ВСЕ СЧЕТА - ВСЕ ОПЛАТЫ
Что я придумал:
select phone from users u, accounts a1, accounts a2 where u.id=a1.userid and phone != '' and (((select sum(a1.amount) from a1 where a1.userid=u.id and a1.type='owe') - (select sum(a2.amount) from a2 where a2.userid=u.id and a2.type='pay')) >= 10000) and datediff(NOW(), select max (a1.datetime) as datetime from a1 where a1.userid=u.id) > 14 group by u.id
Я уже давно модифицирую этот запрос, и лучшее, что я получаю, - это ошибки. Некоторые из которых:
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать около select max (a1.datetime) as datetime from a1 where a1.userid=u.id) > 14 group by
Когда я удаляю последнее и предложение, оно показывает: таблица db.a2 не существует.
Пожалуйста, как мне это сделать?