-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy path15.sql
43 lines (34 loc) · 1.92 KB
/
15.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
-- 15. Задача о пользователях и их телефонах
-- Есть таблицы:
-- CUSTOMER(ID,FIRST_NAME,LAST_NAME,MIDDLE_NAME,EMAIL)
-- PHONE(ID,PHONE_NUMBER,ID_CUSTOMER)
-- Вывести имена пользователей, которые имеют тезок (по имени)
-- Вывести ID пользователей c телефонами
-- Вывести ID пользователей без телефона
create table CUSTOMER (
ID int primary key,
FIRST_NAME varchar(50) not null,
LAST_NAME varchar(50) not null,
MIDDLE_NAME varchar(50),
EMAIL varchar(50)
);
create table PHONE (
ID int primary key,
PHONE_NUMBER varchar(50) not null,
ID_CUSTOMER int,
foreign key (ID_CUSTOMER) references CUSTOMER(ID)
);
insert into CUSTOMER values (1,'Иван','Иванов','Иванович','[email protected]');
insert into CUSTOMER values (2,'Петр','Петров','Петрович','[email protected]');
insert into CUSTOMER values (3,'Сидор','Сидоров','Сидорович','[email protected]');
insert into CUSTOMER values (4,'Иван','Егоров','Андреевич','[email protected]');
insert into PHONE values (1,'+375291111111',1);
insert into PHONE values (2,'+375292222222',1);
insert into PHONE values (3,'+375293333333',3);
insert into PHONE values (4,'+375294444444',4);
-- вывести имена пользователей,которые имеют тезок (по имени)
select c.FIRST_NAME from CUSTOMER c group by c.FIRST_NAME having count(c.FIRST_NAME) > 1;
-- вывести ID пользователей c телефонами
select distinct c.ID from CUSTOMER c inner join PHONE p on c.ID = p.ID_CUSTOMER order by c.id;
-- вывести ID пользователей без телефона
select c.ID from CUSTOMER c where c.ID not in (select ID_CUSTOMER from PHONE);