Ho due tabelle che contengono le persone che lavorano nell'azienda e le loro informazioni sull'occupazione (quindi le persone sono una tabella, l'occupazione è un'altra). La tabella Persone contiene informazioni su dove vive la persona, contatto di emergenza, numero di telefono bla bla bla. La tabella Occupazione contiene informazioni su dove lavora, il capo più vicino e altro. Queste tabelle sono state danneggiate e ora contengono alcuni duplicati per misstake. Ora in entrambe le tabelle è presente un ID Persona, ma l'ID dell'occupazione si trova solo in Occupazione. Voglio entrambi i numeri su tutte le persone che sono state duplicate.Unire le rovine selezionare
Questo funziona perfettamente:
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
restituire i seguenti valori (ma non include il numero di occupazione come potete vedere):
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
Ora, per aggiungere l'id lavoro mi unisco a che tabella come questa:
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
E tutto va a h ** l in un handbasket con il seguente r isultato:
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
Come potete vedere ho sia PersonID e Employmentid ma ora ho solo ottenere uno di ciascuno (ripetuto il numero corretto di volte) in modo da non avere tutte le differenti PersonID e Employmentid nella mia lista .
Perché?
Cosa è successo con il mio join che ha fatto crashare la festa?
Quale dialetto SQL/RDBMS? – Dummy00001
Questo è scritto in MS SQL su MS SQL Server 2012. –
Hai controllato se un 'Person' può essere' impiegato 'più volte? – William