ich die folgenden Tabellen erstellen:Wie bekomme ich einen bestimmten Namen vom Kunden in 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 accidents
(
code_accident varchar(7),
code_policy varchar(7),
CONSTRAINT pk_code_accident PRIMARY KEY (code_accident)
);
ich folgende Termine eingefügt:
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 accidents(code_accident, code_policy)
values('A1','p1');
insert into accidents(code_accident, code_policy)
values('A2','p2');
Die Frage ist: wie Kunden auszuwählen, die Unfälle in jeder ihrer Politik hatte nicht haben?
Mein Problem ist, dass wenn ich versuchte, "nicht in" zu verwenden. Mit "Louis" mindestens eine Richtlinie in der Tabelle "Unfälle", die Abfrage zeigen Sie mir "Louis" und sollte zeigen, nicht "Louis"
Meine Frage:
create or replace view view as
select code from living_places v where code not in (
select distinct a.code_living_place from
policies as a inner join accidents as c
on a.code_policy = c.code_policy
);
select name from customers where ID in (select ID from living_places where code in (select code from view where code in (select code_living_place from policies)));
MySQL zurückgeben mich:
+-------+
| name |
+-------+
| Louis |
+-------+
'nICHT I N 'kann viele Benutzer überraschen, wenn die Unterabfrage eine Null zurückgibt. Mein Tipp ist, entweder 'NOT EXISTS' zu verwenden oder sicherzustellen, dass die Unterabfrage keine Nullen zurückgibt. – jarlh
Warum diese ungeraden ID Spalten Datentypen? Was ist los mit Integer? – jarlh