私は(人々が一つのテーブルがあるので、雇用は別である)の会社で働いている人とその雇用情報が含まれている2つのテーブルを持っています。 Peopleテーブルには、人の在り方、緊急連絡先、電話番号bla bla blaに関する情報が含まれています。雇用表には、彼がどこで働いているか、最寄りの上司などに関する情報が含まれています。 これらのテーブルは壊れており、ミスステイクによっていくつかの重複が含まれています。両方のテーブルにPerson IDがありますが、Employment IDはEmploymentにのみあります。私は両方の数字が重複しているすべての人に欲しいです。次の値を返すは廃墟に参加]を選択し
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
を今、私はそれに参加雇用のIDを追加しますテーブルは次のようになります:
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の両方を見ることができますが、今、私はそれぞれ1つだけを取得する(正しい回数を繰り返した)ので、私は私のリストにすべての異なるPERSONIDとEmploymentidを持っていないとして。
なぜですか?
何が私のパーティーをクラッシュしたことに参加して起こったのか?
どのようなSQL dialect/RDBMSですか? – Dummy00001
これは、MS SQL Server 2012のMS SQLで書かれています。 –
'Person'が複数回' '採用できるのかどうかチェックしましたか? – William