Я пытаюсь сопоставить имена в DS с идентификаторами в A, и их можно подключить только через DA, который является в основном идентификатором клиента и идентификатором элемента. Мне также нужно показать элемент, который не имеет записи о покупке.SQL Oracle повторяет результаты при использовании OR
Я попытался использовать оба условия отдельно, Часть А
SELECT DS.name,A.id
FROM DS,
A,
DA
WHERE DS.id=DA.id AND
A.id=DA.id;
Часть B
SELECT name
FROM DS,
WHERE DS.id NOT IN (
SELECT id FROM DA);
Затем, когда я использую следующий код
SELECT DS.name,A.id
FROM DS,
A,
DA
WHERE (DS.id=DA.id AND
A.id=DA.id) OR
DS.id NOT IN (
SELECT id FROM DA);
Часть A возвращает 4077 результаты и часть B возвращает 820, но последний код дал мне 140000, прежде чем я закончу d это. Я знаю, что могу избавиться от них, используя DISTINCT, но я хочу знать причину этого и как вообще избежать такого рода вещей.