SQL DB2 Найти и показать общий - PullRequest
0 голосов
/ 25 июня 2018

Я работаю над запросом, в котором мне нужно найти все пары отдельных клиентов, которые купили хотя бы один общий заголовок, и отобразить его, причем клиент с более высоким идентификатором в качестве первого клиента A и клиент B - это тот, у кого меньше Я бы. Схема выглядит как

create table customer (
 id   smallint  not null,
 name  varchar(20)
 primary key (id))

create table purchase (
 id    smallint     not null,
 title  varchar(25)  not null,
 primary key (id,title))

Вот запрос, который я написал, но он не выдает желаемого результата

Select 
  distinct A.name as customera,B.name as customerb 
  from customer A,customer B, purchase C 
  where A.id=C.id and B.id=C.id

Но это неправильный результат для того, что я хочу. Я новичок в SQL, и эта база данных - то, над чем я должен работать.

Мой вывод должен выглядеть так, как и он, но он отображает обоих клиентов как один и тот же, что неправильно.

   CUSTOMERA                          CUSTOMERB
 --------------------               --------------------
 Some customer with a higher id      other customer

Любая помощь по этому или как я могу это исправить.

1 Ответ

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

Во-первых, никогда используйте запятые в предложении from. Всегда используйте правильный, явный, стандартный синтаксис join.

Предполагая, что id в purchase соответствует id в клиенте, вы можете просто сделать:

select distinct p1.id, p2.id
from purchase p1 join
     purchase p2
     on p2.title = p1.title and p1.id > p2.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...