ben contento ti sia stato utile.
solo un dubbio, ma per un utente possono esserci più elementi dello stesso tipo? (ex 2 numeri di telefono, due fax, due mail)?
Se così non è, visto che usi sql server 2005 potresti pensare di utilizzare anche la nuova funzione PIVOT di sql server 2005 (non so dirti a priori quale sia la più veloce):
codice:
SELECT
c.codice,
c.anagrafica,
[1] AS telefono,
[2] AS fax,
[3] AS mail
FROM
clienti AS c
INNER JOIN
(
SELECT
*
FROM
contatti
) AS s
PIVOT
(
MAX(contatto)
FOR
tipo IN ([1],[2],[3])
) AS p
ON
c.codice = p.codice
la mia prima query se un cliente ha 2 numeri di telefono tira fuori 2 righe duplicando gli altri dati.
questa tira fuori solo una riga e un numero (il più grande nell'esempio, ma solo perché pivot vuole una funzione di aggregazione).
con un po' di lavoro, se un utente ha due numeri di telefono, si può creare una funzione di aggregazione che concateni i risultati, da utilizzare con il pivot. occorre però sfruttare CLR e scrivere qualche riga di codice in c#/vb.net.