Дополнительные строки, полученные при сопоставлении пар в SQL - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь сопоставить customers, которые приобрели тот же товар, заказанный по первому идентификатору клиента CID.Запрос дает правильные результаты, но я получаю примерно на 37 строк больше, чем должен был получить.

При проверке, кажется, есть некоторые дубликаты в этом смысле

Customer A | Customer B
Customer B | Customer A

Это происходит только для некоторых совпадений, но не для других

SELECT DISTINCT ca.name as CUSTOMERA, cb.name as CUSTOMERB
FROM customer ca, customer cb
INNER JOIN YRB_PURCHASE pur1 ON ca.cid = pur1.cid
INNER JOIN YRB_PURCHASE pur2 ON cb.cid = pur2.cid
WHERE pur1.title = pur2.title 
  AND ca.cid > cb.cid;

Вот небольшой пример избаза данных

Jon Stewart  | Sydney Crosby
Jake Banning | James Monroe
James Monroe | Jake Banning

Последняя строка не должна быть возвращена, поскольку Джейк Баннинг и Джеймс Монро уже спарены в строке 2

1 Ответ

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

Если вам нужны строки, в которых первое имя находится в алфавитном порядке перед вторым, просто скажите SQL, что

SELECT DISTINCT ca.name as CUSTOMERA, cb.name as CUSTOMERB
FROM customer ca, customer cb
INNER JOIN YRB_PURCHASE pur1 ON ca.cid = pur1.cid
INNER JOIN YRB_PURCHASE pur2 ON cb.cid = pur2.cid
WHERE pur1.title = pur2.title 
  AND ca.name < cb.name;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...