は、私は、次の表を作成します。 MYSQLの特定の顧客を選択しますか?
create table customers
(
ID varchar(9),
name varchar(15),
CONSTRAINT pk_id PRIMARY KEY (ID)
);
create table living_places
(
code varchar(7),
ID varchar(9),
CONSTRAINT pk_code PRIMARY KEY (code)
);
create table policies
(
code_policy varchar(7),
code_living_place varchar(7),
CONSTRAINT pk_code_policy PRIMARY KEY (code_policy)
);
create table bills
(
code varchar(7),
code_policy varchar(7),
paid_out boolean,
CONSTRAINT pk_code_bill PRIMARY KEY (code)
);
I inserted the following dates:
は、私は次の日付を挿入:
insert into customers(ID, name)
values('fx1','Louis');
insert into customers(ID, name)
values('fx2','Peter');
insert into customers(ID, name)
values('fx3','Alice');
insert into living_places(code, ID)
values('001','fx1');
insert into living_places(code, ID)
values('002','fx2');
insert into living_places(code, ID)
values('003','fx1');
insert into living_places(code, ID)
values('004','fx3');
insert into policies(code_policy, code_living_place)
values('p1','001');
insert into policies(code_policy, code_living_place)
values('p2','002');
insert into policies(code_policy, code_living_place)
values('p3','003');
insert into bills(code, code_policy, paid_out)
values('b1','p1','1');
insert into bills(code, code_policy, paid_out)
values('b2','p1','1');
insert into bills(code, code_policy, paid_out)
values('b3','p2','0');
insert into bills(code, code_policy, paid_out)
values('b4','p2','1');
insert into bills(code, code_policy, paid_out)
values('b5','p3','0');
insert into bills(code, code_policy, paid_out)
values('b6','p3','1');
質問です:支払ったすべてのポリシーを持っているそれらの人々を選択する方法。
私の問題は、「ルイー」には「p1」と「p3」の2つのポリシーがあり、「p1」は支払われますが、「p3」は支払われません。
マイクエリ:
select ID from living_places where code in (
select code from living_places where code in (
select code_living_place from policies where code_policy in (
select code_policy from bills where paid_out=1 and code_policy not in (
select code_policy from bills where paid_out=0))));
MySQLは私を返す:
+------+
| ID |
+------+
| fx1 |
+------+
はP.S: "ルイ" は有料のすべてのポリシーを持っていけません。たとえば、請求書 "b5"は支払われません。
同じ質問を2回転載しないでください。あなたはすでに今日この質問をしており、答えがあります。 http://stackoverflow.com/questions/37080951/how-to-select-a-specific-customer既に作成した同じ質問を続行し、新しい投稿の先頭に戻って同じことを繰り返す必要はありません。これはレッドではありません。 – Dresden
@Dresdenポストを繰り返し投稿して申し訳ありませんが、問題は他の人が読むと思っていました。もう一度やりません – Python241820