Passa al contenuto principale

DEFQUERYUNION

DesktopWeb
warning
La specifica è deprecata nei sorgenti con STRICT maggiore o uguale a 4, al suo posto vedere Specifica DEFQUERYSET

L'architettura prevede di rappresentare le query singolarmente e poi concatenarle in UNION nella fase successiva utilizzando la seguente sintassi.
La query principale è la prima utilizzata ed è quella che indica l'intestazione e il numero delle colonne e il tipo di dati a cui le altre query devono attenersi.
Al momento dell'esecuzione (runtime) avverrà il controllo formale del record-set di uscita (le colonne di output delle diverse query devono essere coerenti per numero e tipo).
In caso di non conformità l'ambiente produce errore nelle modalità standard di gestione correnti (parametro ERRORE).
Prevede un parametro opzionale ALL che evita la rimozione delle righe duplicate (Sintassi SQL: UNION ALL).

warning

La clausola ORDER BY può essere utilizzata solo 'globalmente' allo statement (non all'interno delle singole SELECT). La specifica BC da utilizzare è la @DEFQUERYORDER.

warning

La clausola GROUP BY può essere utilizzata solo 'internamente' alle singole SELECT, e non globalmente per tutte le select. La specifica BC da utilizzare per le singole query rimane la @DEFQUERYFIELD.

Parametri

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYUNIONLongINObbligatorioDesktopWeb
QUERYLongINObbligatorioRipetibileDesktopWeb
ALLInteroINRipetibileDesktopWeb
ERROREInteroINDesktopWeb

IDQUERYUNION

LongINInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktopWeb

Identificativo della query che rappresenta l'unione delle successive query.

QUERY

LongINInputObbligatorioObbligatorioRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Identificativo delle query da mettere in unione.

ALL

InteroINInputRipetibileRipetibileValore non necessarioValore non necessarioDesktopWeb

Consente al programma di evitare la rimozione delle righe duplicate.

Parametro con valori ammessi, si possono utilizzare i seguenti valori:

ValoreDescrizione
0NON evita la rimozione delle righe duplicate
1Evita la rimozione delle righe duplicate

ERRORE

InteroINInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Consente al programma di intercettare e gestire l'errore restituito dalla funzione.

suggerimento

Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.

Esempi

Definizione

 DIM queryUnionId[INT]
DIM queryObject1[INT]
DIM queryObject2[INT]

'@DEFQUERY IDQUERY[queryUnionId] NOME["BCRIF_DEFQUERYUNION_25"]

' Query della prima tabella BLD_Articoli
'@DEFQUERY IDQUERY[QueryObject1] NOME["BCRIF_DEFQUERYUNION_3"]

'@DEFQUERYFROM IDQUERY[QueryObject1] TABELLA[BLDART]

'@DEFQUERYCOLUMN IDQUERY[QueryObject1] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]

' Query della seconda tabella BLD_Righe
'@DEFQUERY IDQUERY[QueryObject2] NOME["BCRIF_DEFQUERYUNION_13"]

'@DEFQUERYFROM IDQUERY[QueryObject2] TABELLA[BLDRIGA]

'@DEFQUERYJOIN IDQUERY[QueryObject2] TABELLA[BLDART] TABELLAPADRE[BLDRIGA] _
REL[BLDART.COD=BLDRIGA.CODART] _
OPERATOREJOIN["INNER"]

'@DEFQUERYCOLUMN IDQUERY[QueryObject2] ESPR[BLDRIGA.CODART AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]]

''@DEFQUERYUNION IDQUERYUNION[queryUnionId] QUERY[QueryObject1] QUERY[QueryObject2] ALL[0]
'@DEFQUERYUNION IDQUERYUNION[queryUnionId] QUERY[queryObject1] QUERY[QueryObject2] ALL[1]

'@DEFQUERYORDERBY IDQUERY[queryUnionId] ESPR[[CodArt]]

' Statement SQL generato con parametro ALL[0] | Statement SQL generato con parametro ALL[1]
' |
' SELECT BLDArticoli_1.CodArt AS [CodArt] | SELECT BLDArticoli_1.CodArt AS [CodArt]
' ,BLDArticoli_1.DesArt AS [DesArt] | ,BLDArticoli_1.DesArt AS [DesArt]
' FROM BLDArticoli AS [BLDArticoli_1] | FROM BLDArticoli AS [BLDArticoli_1]
' WHERE (BLDArticoli_1.DBGruppo = 'GG') | WHERE (BLDArticoli_1.DBGruppo = 'GG')
' |
' UNION | UNION ALL
' |
' SELECT BLDRighe.CodArt AS [CodArt] | SELECT BLDRighe.CodArt AS [CodArt]
' ,BLDArticoli_1.DesArt AS [DesArt] | ,BLDArticoli_1.DesArt AS [DesArt]
' FROM BLDRighe AS [BLDRighe] | FROM BLDRighe AS [BLDRighe]
' INNER JOIN BLDArticoli AS [BLDArticoli_1] ON ( | INNER JOIN BLDArticoli AS [BLDArticoli_1] ON (
' BLDArticoli_1.CodArt = BLDRighe.CodArt | BLDArticoli_1.CodArt = BLDRighe.CodArt
' AND (BLDArticoli_1.DBGruppo = BLDRighe.DBGruppo) | AND (BLDArticoli_1.DBGruppo = BLDRighe.DBGruppo)
' ) | )
' WHERE (BLDRighe.DBGruppo = 'GG') | WHERE (BLDRighe.DBGruppo = 'GG')
' ORDER BY [CodArt] ASC | ORDER BY [CodArt] ASC
' |
' Risultato della query | Risultato della query
' |
' CodArt DesArt | CodArt DesArt
' --------- --------------- | --------- ---------------
' ... | ...
' 002 Articolo 002 | 001 Articolo 001
' 003 Articolo 003 | 001 Articolo 001
' 004 Articolo 004 | 001 Articolo 001
' 005 Articolo 005 | 001 Articolo 001
' 006 Articolo 006 | 001 Articolo 001
' 007 Articolo 007 | 002 Articolo 002
' 008 Articolo 008 | 002 Articolo 002
' 009 Articolo 009 | 002 Articolo 002
' 010 Articolo 010 | 002 Articolo 002
' 011 Articolo 011 | 002 Articolo 002
' ... | ...