Как бы я создать запрос, который дает мне имена клиентов с одинаковыми покупками - PullRequest
0 голосов
/ 25 июня 2018

Какие пары покупателей приобрели хотя бы одну общую книгу?

Список различных пар клиентов (по имени). Для каждой пары клиентов покажите первого с большим CID; Назовите две колонки customera и customerb.

это то, что я пробовал, но постоянно получаю сообщение об ошибке. И как бы я использовал псевдоним для переименования имен столбцов?

select cusA.name, cusB.name
from yrb_customer cusA, yrb_customer cusA, yrb_purchase A, yrb_purchase B
where A.title=B.title
and A.cid<>B.cid;

вот что должно быть на выходе:

CUSTOMERA            CUSTOMERB
-------------------- --------------------
Jackie Johassen      Al Bore
Margaret Mitchie     Al Bore
Phil Regis           Al Bore
Pretence Parker      Al Bore
Doris Daniels        Andy Aardverk
George Gush          Andy Aardverk
...

282 record(s) selected.


create table yrb_customer (
cid   smallint  not null,
name  varchar(20),
city  varchar(15),
constraint yrb_customer_pk
    primary key (cid));


create table yrb_purchase (
cid    smallint     not null,
club   varchar(15)  not null,
title  varchar(25)  not null,
year   smallint     not null,
when   timestamp    not null,
qnty   smallint     not null,...



insert into yrb_customer (cid, name, city) values
(1,'Tracy Turnip','Richmond'),
(2,'Qfwfq','Pluto'),
(3,'Fuzzy Fowles','Petersburg'),
(4,'Suzy Sedwick','Williamsburg'),...

insert into yrb_purchase (cid,club,title,year,when,qnty) values
(1,'Basic','Will Snoopy find Lucy?',1985,'2001-12-1-11.59.00',1),
(1,'Readers Digest','Flibber Gibber',2000,'2001-12-1-11.59.00',1),
(1,'Readers Digest','Yon-juu Hachi',1948,'1999-4-20-12.12.00',1),
(1,'W&M Club','Nothing but Steak',1991,'2001-12-1-11.59.00',1),

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Попробуйте приведенный ниже запрос

Select cusA.name, cusB.name
from yrb_customer cusA, yrb_customer cusB, yrb_purchase A, yrb_purchase B
Where A.cid <> B.cid
and cusA.cid = A.cid
and cusB.cid = B.cid
and A.title = B.title;
0 голосов
/ 25 июня 2018

Запрос выглядит немного не так.Например, покупки не связаны с таблицами клиентов.Возможно, попробуйте:

select cusA.name, cusB.name
from yrb_customer cusA, yrb_customer cusB, yrb_purchase A, yrb_purchase B
where cusA.cid=A.cid
and cusB.cid=B.cid
and A.title=B.title
and A.cid > B.cid;

Вы также можете использовать JOIN для достижения того же поведения.

...