Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Valori univoci da una vista SQL-SERVER

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

Valori univoci da una vista SQL-SERVER

Postdi iucaa » 24/10/07 12:06

Ciao a tutti ho il seguente problema (non sò se risolvibile):

ho creato una vista che mi deve restituire da una tabella i record che hanno il CF e PIVA diversi ma con il numero tel. uguale, sono riuscito ad ottenerla, ma il mio cliente mi chiede anche di eliminare i doppi CF o PIVA presenti (Che ovviamente vengono invece estratti in quanto rimessi in join nella tabella di estrazione che contiene il n.tel), non so se sono stato chiaro:

(Mostro solo i campi necessari allo scopo, ce nè sono altri)

Nome CF N.tel
AAAA 123 089
AAAA 123 089
BBBB 111 787
TTTT 234 787


Io avrei la necessita di mostrare solo un record del nome 'AAA', ho provato di tutto DISTINCT, COUNT, NOT IN, ma ottengo sempre quel risultato.

:eeh: :-?
iucaa
Utente Senior
 
Post: 488
Iscritto il: 23/10/03 12:03
Località: Roma

Sponsor
 

Postdi Triumph Of Steel » 24/10/07 12:31

group by CF? provato?
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Re: Valori univoci da una vista SQL-SERVER

Postdi archimede » 24/10/07 13:12

iucaa ha scritto:ho creato una vista che mi deve restituire da una tabella i record che hanno il CF e PIVA diversi
Prima incongruenza: nel tuo esempio vedo CF uguali.
iucaa ha scritto:il mio cliente mi chiede anche di eliminare i doppi CF o PIVA presenti
Seconda incongurenza: in base a quale criterio decidi quale record eliminare quale tenere?
iucaa ha scritto:(Che ovviamente vengono invece estratti in quanto rimessi in join nella tabella di estrazione che contiene il n.tel)
Eeeh?
iucaa ha scritto:Mostro solo i campi necessari allo scopo, ce nè sono altri
Allora DISTINCT e GROUP BY non puoi usarli direttamente, se intendo bene quel che vuoi dire.

Facciamo così: scrivi qui i dati di 5 o 6 records della tabella, cosa vorresti come risultato e i criteri per ottenere il risultato (e magari il codice da te usato al momento).

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi iucaa » 24/10/07 14:02

iucaa ha scritto:
ho creato una vista che mi deve restituire da una tabella i record che hanno il CF e PIVA diversi
Prima incongruenza: nel tuo esempio vedo CF uguali.


Intendevo dire presenti una sola volta (non duplicati)

iucaa ha scritto:
il mio cliente mi chiede anche di eliminare i doppi CF o PIVA presenti
Seconda incongurenza: in base a quale criterio decidi quale record eliminare quale tenere?


Il criterio si applica al numero di telefono: esempio ho un num di tel. '0889' che si ripete 3 volte (3 record) questi 3 record hanno 2 codici fiscali diversi (quindi 2 di questi ne hanno uno uguale), vorrei eliminare uno di questi 2 record (in quanto già presente come codice fiscale), non sò se sono chiaro, l'importanza dell'estrazione dei dati è: trovare tutti i records che hanno lo stesso numero di tel. ma con CF o PIVA diversi

iucaa ha scritto:
(Che ovviamente vengono invece estratti in quanto rimessi in join nella tabella di estrazione che contiene il n.tel)



Provo a postare il codice, la vista View_CF_PIVA_Univoca estrare i record con CF e PIVA unici (Distinct )

SELECT DISTINCT
dbo.View_CF_PIVA_Univoca.Id,
dbo.View_CF_PIVA_Univoca.Nome,
dbo.View_CF_PIVA_Univoca.Numero,
dbo.View_CF_PIVA_Univoca.Data_Attivazione,
dbo.View_CF_PIVA_Univoca.CF, dbo.View_CF_PIVA_Univoca.PIVA
FROM
dbo.View_5 LEFT OUTER JOIN
dbo.View_CF_PIVA_Univoca
ON dbo.View_5.PIVA = dbo.View_CF_PIVA_Univoca.PIVA
AND
dbo.View_5.CF = dbo.View_CF_PIVA_Univoca.CF


Questa vista funziona, ma ottengo ovviamente dei cf doppi

:roll:

Scusa grazie per l'attenzione

Questo è l'output, per motivi di privacy ho indicato solo l'ultima parte del cf, calcola che ci sono altri campi all'interno della vista.

ID | NOME | CF
------|------------------------------|--------------
1372 | N<*******>E |H501S
1382 | R<******>O |H501E
1390 | C<********>O |A485Z
1392 | D ´A<*********>E |H501J
1396 | D ´A<*********>E |H501J
1399 | M<*********>E |496B
1403 | F<********>A |H501E
1404 | F<********>A |H501E

Come puoi vedere H501J e H501E sono duplicati (Ma hanno lo stesso n. di tel. tra di loro)





[/quote]
iucaa
Utente Senior
 
Post: 488
Iscritto il: 23/10/03 12:03
Località: Roma

Postdi archimede » 24/10/07 17:37

iucaa ha scritto:ho un num di tel. '0889' che si ripete 3 volte (3 record) questi 3 record hanno 2 codici fiscali diversi (quindi 2 di questi ne hanno uno uguale), vorrei eliminare uno di questi 2 record
Il problema è che se io ho:

ID CF TEL.
1 aa 0889
2 bb 0889
3 bb 0889

devo far vedere ID 2 o ID 3?

Se è indifferente puoi provare (senza aggiungere altri campi):
Codice: Seleziona tutto
SELECT MAX(ID), CF, TEL FROM tabella GROUP BY CF, TEL;
Se non è indifferente, mi sa che siamo ancora lontani dalla soluzione perché non ho capito come vuoi applicare il filtro sui tuoi dati.

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi iucaa » 25/10/07 12:40

Ora provo e poi ti dico, potrebbe funzionare, il problema non credo che sia risolvibile in quanto associando nuovamente, per la visualizzazione, i dati dalle tabelle ottieni per forza di cose un prodotto cartesiano in quanto, ovviamente i cf sono duplicati.

:eeh:
iucaa
Utente Senior
 
Post: 488
Iscritto il: 23/10/03 12:03
Località: Roma

Postdi archimede » 25/10/07 12:50

Dove associando nuovamente significa...?

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova


Torna a Programmazione


Topic correlati a "Valori univoci da una vista SQL-SERVER":


Chi c’è in linea

Visitano il forum: Nessuno e 5 ospiti