У меня есть две таблицы, в которых содержатся люди, которые работают в компании и их данные о занятости (так что люди - это одна таблица, занятость - другая). Таблица людей содержит информацию о том, где живет человек, экстренный контакт, номер телефона bla bla bla. Таблица занятости содержит информацию о том, где он работает, ближайший босс и многое другое. Эти таблицы были повреждены и теперь содержат несколько дубликатов по ошибке. Теперь в обеих таблицах есть идентификатор Person, но идентификатор занятости находится только в занятости. Мне нужны оба числа для всех людей, которые были дублированы.Присоединиться к развалинам выбрать
Это отлично работает:
SELECT DISTINCT
pp.Personid,
pp.Firstname,
pp.Lastname,
pp.Address,
FROM People pp
JOIN People pp2
ON pp.Firstname = pp2.Firstname
AND pp.Lastname = pp2.Lastname
AND pp.Address = pp2.Address
AND pp.Personid <> pp2.Personid
ORDER BY pp.Firstname, pp.Lastname, pp.Personid
возвращаются следующие значения (но не включает в себя количество занятости, как вы можете видеть):
1001 Carl Johnsson Bigstreet 1
1002 Carl Johnsson Bigstreet 1
1003 Carl Johnsson Bigstreet 1
1010 Andrew Wilkinsson Smallstreet 2
1011 Andrew Wilkinsson Smallstreet 2
Теперь, чтобы добавить идентификатор занятости я присоединиться к тем, стол, подобный этому:
SELECT DISTINCT
pp.Personid,
e.Employmentid,
pp.Firstname,
pp.Lastname,
pp.Address,
FROM People pp
JOIN People pp2
ON pp.Firstname = pp2.Firstname
AND pp.Lastname = pp2.Lastname
AND pp.Address = pp2.Address
AND pp.Personid <> pp2.Personid
JOIN Employment e on pp.Personid = e.Personid
ORDER BY pp.Firstname, pp.Lastname, pp.Personid
И все идет к h ** l в корзине со следующим r esult:
1001 1111 Carl Johnsson Bigstreet 1
1001 1111 Carl Johnsson Bigstreet 1
1001 1111 Carl Johnsson Bigstreet 1
1010 1234 Andrew Wilkinsson Smallstreet 2
1010 1234 Andrew Wilkinsson Smallstreet 2
Как вы можете видеть, я получаю как PersonId и Employmentid, но теперь я только получить один из каждого (повторяющееся правильное число раз), поэтому я не все различные PersonId и Employmentid в моем списке ,
Почему?
Что случилось с моим соединением, которое разбило вечеринку?
Какой диалект SQL/RDBMS? – Dummy00001
Это написано в MS SQL на сервере MS SQL 2012. –
Вы проверили несколько раз «один человек»? – William