Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto per SQL

Ciao a tutti.
Ho due tabelle che si chiamano TabPrgIndici e Prat_Prg
La prima contiene un elenco di elementi, la seconda collega i dati di una
pratica con il relativo elemento di TabPrgIndici.
Se eseguo questa sql:
Select IDPrg, Zona, Descr From TabPrgIndici
Il risultato è:
IDPrg       Zona   Descr
---------- ---------- ------------------------------------------------------
----------------------------------------------------------------------------
----------------------------------------------------------------------
1           B1         DI RECUPERO DEL PATRIMONIO EDILIZIO ESISTENTE
1           B2         zona residenziale
1           B2I        produttiva di completamento
1           B2R        residenziale intensiva
1           B2S        commerciale - terziario di completamento
1           B3         semintensiva di completamento
1           B3R        residenziale semintensiva di completamento
1           B4         estensiva di completamento
1           B4R        residenziale di completamento
1           B5         verde privato
1           B5R        residenziale estensiva di completamento
1           B6R        verde privato
1           C1         seintensiva di espansione subordinata a piano
esecutivo
.
.ecc...
La tabella di collegamento invece è così:
Select * From Prat_Prg
idPrat    idPrg     Zona
----------- ----------- ----------
1           1           B2S
1           1           B4
1           1           B6R
5           1           C1
5           1           C3
Quello che vorrei ottenere è un recordset con tutti i record di TabPrgIndici
e con un campo che mi specifica se tale record è stato già collegato
all'IdPrat che sto considerando.
Quindi se considero IdPrat=1 dovrei ottenere un recordset di questo tipo:
IDPrg    Zona   Descr
Selezionato
1           B1         DI RECUPERO DEL PATRIMONIO EDILIZIO ESISTENTE     0
1           B2         zona residenziale
0
1           B2I        produttiva di completamento
0
1           B2R        residenziale intensiva
0
1           B2S        commerciale - terziario di completamento
1
1           B3         semintensiva di completamento
0
1           B3R        residenziale semintensiva di completamento
0
1           B4         estensiva di completamento
1
1           B4R        residenziale di completamento
0
1           B5         verde privato
0
1           B5R        residenziale estensiva di completamento
0
1           B6R        verde privato
1
1           C1         seintensiva di espansione subordinata a piano
esecutivo                    0
E' possibile ottenere questo risultato con una query?
Grazie a tutti per l'aiuto.
Ciao.
Gian L.

Scusate, riposto il messaggio precedente perchè ho notato che la tabella
finale viene sballata quando visualizzata in Outlook.




IDPrg    Zona   Descr                                    Selezionato
1           B1       DI RECUPERO DEL ...       0
1           B2       zona residenziale                   0
1           B2I      produttiva di completamento 0
1           B2R     residenziale intensiva             0
1           B2S     commerciale - terziario di...   1
1           B3       semintensiva di completam...  0
1           B3R     residenziale semintensiva di... 0
1           B4       estensiva di completamento    1
1           B4R     residenziale di completame... 0
1           B5       verde privato                         0
1           B5R     residenziale estensiva di co...  0
1           B6R     verde privato                         1
1           C1       seintensiva di espansione s..   0


 all'IdPrat che sto considerando.
Se ti basta il suggerimento, dovresti studiare l'istruzione join dell'SQL,
in particolare LEFT JOIN, se vuoi l'istruzione completa, ....  bip bip
Legge di Murphy "Qualsiasi risultato calcolato dopo le ore 16:30 del venerdì
è da considerarsi inattendibile"
Salutoni
Sergio

 E' possibile ottenere questo risultato con una query?
Numero dei movimenti per ogni articolo:
Select codice_art, (Select Count(*) From MOV Where
MOV.articolo=ART.codice_art) As NumMov From ART
Nel tuo caso (non provata):
Select IDPrg, Zona, Descr, (Select Count(*) From Prat_Prg Where
Prat_Prg.idPrg=TabPrgIndici) As NumSel From TabPrgIndici

Pardon:
Select IDPrg, Zona, Descr, (Select Count(*) From Prat_Prg Where
Prat_Prg.idPrat=TabPrgIndici.IDPrg) As NumSel From TabPrgIndici


Grazie!
Ho modificato un po' la condizione di join tra le due tabelle e funziona
alla perfezione!
Select IDPrg, Zona, (Select Count(*) From Prat_Prg Where
Prat_Prg.idPrg=TabPrgIndici.IDPrg AND Prat_Prg.Zona=TabPrgIndici.Zona AND
Prat_Prg.IDPrat=1) As OK From TabPrgIndici
Grazie ancora.
Skysurfer