Кілька таблиць приєднатися до дилеми - sql

Дозвольте виконати наступний набір об'єднань:

A -> B -> C -> D

Цей набір об'єднань створює лише один рядок у наборі результатів. Тепер, якщо додати більше приєднань:

A -> B -> C -> D
|
E -> F -> G

Тепер B з'єднаний також з E.

Всі з'єднання є внутрішніми об'єднаннями.

Чи можемо ми гарантувати, що отриманий набір завжди матиме 0 або 1 рядок?

Відповіді:

0 для відповіді № 1

Проста відповідь: Ні. Якщо будь-який з приєднань B -> E, E-> F, F-> G - один-до-багатьох, то можна потенційно отримати більше одного рядка назад від вашого запиту.


0 для відповіді № 2

Так, ти можеш.

Якщо ви хочете забезпечити 0 або 1 рядок, ви повинні переконатися, що кожна таблиця приєднується до свого первинного ключа або до унікального індексу з обох сторін; також ваша пропозиція WHERE забезпечує одну таблицю повернення 0 або 1 рядка.

Важливо бути унікальним індексом або первинним ключем, тому що кожен JOIN забезпечує кратність. Наявність унікального індексу або первинного ключа забезпечує співвідношення (0,1) x (0,1).