Tôi có hai bảng chứa Những người đang làm việc tại công ty và thông tin Việc làm của họ (vì vậy Mọi người là một bảng, Việc làm là một bảng khác). Bảng Mọi người chứa thông tin về nơi người đó sống, liên lạc khẩn cấp, số điện thoại bla bla bla. Bảng Employment chứa thông tin về nơi anh ta làm việc, sếp gần nhất và hơn thế nữa. Các bảng này đã bị hỏng và hiện chứa một vài bản sao do nhầm lẫn. Bây giờ trong cả hai bảng có một id Person, nhưng id việc làm chỉ nằm trong Employment. Tôi muốn cả hai con số trên tất cả mọi người đã được nhân đôi.Tham gia hủy hoại lựa chọn
này hoạt động hoàn hảo:
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
trở về các giá trị sau (nhưng không bao gồm số lao động như bạn có thể nhìn thấy):
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
Bây giờ, để thêm id việc tôi tham gia trong đó bảng như thế này:
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
Và mọi thứ đều được chuyển đến h ** l trong một handbasket với 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
Như bạn có thể thấy tôi có được cả hai PersonId và Employmentid nhưng bây giờ tôi chỉ nhận được một trong mỗi (lặp đi lặp lại chính xác số lần) vì vậy tôi không có tất cả các PersonId khác nhau và Employmentid trong danh sách của tôi .
Tại sao?
Điều gì đã xảy ra với sự tham gia của tôi đã làm hỏng bữa tiệc?
Phương ngữ SQL/RDBMS nào? – Dummy00001
Điều này được viết bằng MS SQL trên máy chủ MS SQL 2012. –
Bạn đã kiểm tra xem một 'Person' có thể được' sử dụng' nhiều lần không? – William