私はこのmysqlクエリを2日間実行しています。これはシナリオです。3つのmysqlテーブルからのデータ選択エラー
ユーザーとアカウントの2つのテーブルがあります。下記そこの構造:
私は万の上に起因する人の電話番号を選択したいと有料または14日以上前の最後の課金:私は何をしたいか
$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)";
。私たちが起因している人を見つけるにはどうすればよい
:人が行うと
insert into accounts (id, userid, type, amount, date_paid) values ('', 'id of the person', 'OWE', 50000, '$date');
:あなたは(000、50を仮定して)請求された場合
を行はこのようなDBに追加されます有料(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構文に誤りがあります。テーブルdb.a2は存在しません:
select max (a1.datetime) as datetime from a1 where a1.userid=u.id) > 14 group by
私は最後の句を削除すると、それは示し近くで使用する権利構文についてはMySQLサーバのバージョンに対応するマニュアルを確認してください。
どうすればよいですか?
はありがとうございました!!!できたね。ちょうど少数の演算子を変更しました。もう一度ありがとう –