Это мой tblEmp стол и tblDept таблица (я использую MS-SQL Server 2012), когда я пытаюсь использовать перекрестное соединение этих двух таблиц это дает мне результат, который я не ожидал, просто хотел узнать, почему это кросс-соединение дает такой результат, спасибо.Неожиданный результат перекрестного соединения
ID Name Gender Salary Dept_id
1 abc male 2004 1
2 Tom female 5004 2
3 Sara female 29404 2
4 Jim male 8604 3
5 Lisan male 2078 1
6 Brad male 9804 3
7 Diana female 2095 2
8 Henry male 28204 2
9 Mark male 20821 1
10 Miley female 9456 1
11 Richie male 8604 NULL
12 Lisan female 20776 NULL
tblDept
ID Dept_Name Location
1 IT Mumbai
2 HR Delhi
3 Accounts London
4 OtherDepartment NewYork
это перекрестное соединение запрос и его вывод
select Name, Gender, Salary, Dept_Name
from tblEmp
CROSS JOIN tblDept
where tblEmp.Dept_id is NULL
ВЫВОД
Name Gender Salary Dept_Name
Richie male 8604 IT
Richie male 8604 HR
Richie male 8604 Accounts
Richie male 8604 OtherDepartment
Lisan female 20776 IT
Lisan female 20776 HR
Lisan female 20776 Accounts
Lisan female 20776 OtherDepartment
Что я ожидал, что-то вроде этого
Name Gender Salary Dept_Name
Richie male 8604 NULL
Richie male 8604 NULL
Richie male 8604 NULL
Richie male 8604 NULL
Lisan female 20776 NULL
Lisan female 20776 NULL
Lisan female 20776 NULL
Lisan female 20776 NULL
Пропустить пункт WHERE. Что вы получаете? Имеет ли смысл текущий результат, если вы повторно вводите предложение WHERE? – jarlh
Ваши ожидания ошибочны. «Cross join» не соответствует строкам между таблицами. Вам просто нужно подумать об этом и попробовать другие «кросс-соединения», я думаю, чтобы полностью понять, почему результаты верны. –
@jarlh Пропуск предложения where извлекает мне ненулевые записи – Deepesh