Типы соединений между двумя таблицами, пример - Natural Join
Я приложил вопрос, с которым я борюсь. Что касается вопроса, я разработал количество кортежей для каждого типа соединения.
Я получил: R4 = 15(полное соединение, поэтому 10 в первой таблице и 5 во второй) R3=?, R2 = 5 и R1 = 10.
Правильный ответ - четвертый пункт, но я не уверен, как этого добиться. Любая помощь будет оценена!
1 ответ
Просто рассмотрите каждое объединение отдельно, и вы можете получить минимальное и максимальное количество строк, возвращаемое каждым.
R1. TBL1 ЛЕВОЕ ЕСТЕСТВЕННОЕ НАРУЖНОЕ СОЕДИНЕНИЕ TBL2
Таким образом, TBL1 имеет 10 строк, поэтому будет возвращено 10 строк, других возможностей нет, независимо от того, что находится в TBL2.
R2. TBL1 ПРАВЫЙ ЕСТЕСТВЕННЫЙ НАРУЖНЫЙ РЕЙТИНГ TBL2
Как и выше, TBL2 имеет 5 строк, поэтому возвращается 5 строк. Других возможностей нет.
R3. TBL1 NATURAL JOIN TBL2
При отсутствии типа соединения ("INNER", LEFT
, 'ПРАВО or
ПОЛНЫЙ ) on the JOIn MySQL (and all other DBMS as far as I know) will interpret an
INNER JOIN`, поэтому максимально возможное число возвращаемых строк равно 5, поскольку в TBL2 имеется только 5 строк, однако можно вернуть 0 строк, если совпадений нет.
R4. TBL1 ЕСТЕСТВЕННОЕ ПОЛНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ TBL2
Если между этими двумя значениями нет общих значений, будет возвращено 15 строк, или если все значения в TBL2 находятся в TBL1, будут возвращены только 10 строк.
Так что у тебя есть
R1. 10
R2. 5
R3. 0-5
R4 10-15
Таким образом, изменяя порядок в порядке убывания количества строк, вы получите:
R4 10-15
R1. 10
R2. 5
R3. 0-5
Какой твой ответ
R4 >= R1 > R2 >= R3