DEFSUBQUERY
Inizializza una subquery per la sua successiva definizione.
La subquery deve essere collegata alla query principale definita in precedenza tramite la specifica '@DEFQUERY.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| IDQUERYPADRE | Long | ||||
| QUERY | Classe BCQUERY | 31.3 | |||
| QUERYPADRE | Classe BCQUERY | 31.3 | |||
| ELIMINADUPLICATI | Intero | ||||
| MAXRECORD | Long | ||||
| MULTIGRUPPO | Intero | ||||
| MULTISTAZIONE | Intero | ||||
| MULTIDOMINIO | Intero | ||||
| VINCOLI | Intero | ||||
| NOLOCK | Intero | 31.2 | |||
| ERRORE | Intero |
IDQUERY
Identificatore della query restituito dalla specifica DEFQUERY
IDQUERYPADRE
Variabile che indica l'identificatore della query esterna che contiene la subquery (o sottoquery).
QUERY
Identifica l'oggetto Query esterno della nostra subquery.
QUERYPADRE
Identifica l'oggetto Querypadre esterno della nostra subquery.
ELIMINADUPLICATI
Indica se eliminare dal risultato della query le eventuali righe duplicate (con stessi valori su tutte le colonne).
Corrisponde all'applicazione della clausola DISTINCT al comando SQL della query
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
MAXRECORD
Definisce il numero di record da leggere dall'insieme dei record restituiti dalla query. Corrisponde all'applicazione della clausola TOP 'MaxRecord'. Se non indicato verranno letti tutti i record
MULTIGRUPPO
Indica se applicare o meno il filtro automatico sul campo GR (DBGruppo) sulle tabelle di gruppo nella query
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | Applica il filtro sul campo gruppo per le tabelle di gruppo |
1 | Non applica il filtro sul campo gruppo per le tabelle di gruppo |
MULTISTAZIONE
Indica se applicare o meno il filtro automatico sul campo WS (DBStazione) sulle tabelle di stazione nella query
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | viene applicato il filtro sul campo stazione per le tabelle che lo prevedono |
1 | non viene applicato il filtro sul campo stazione per le tabelle che lo prevedono (legge tutto) |
MULTIDOMINIO
Indica la possibilità di accedere ai record di una tabella relativi a più domini
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
VINCOLI
Permette di abilitare la gestione della profilazione se la tabella è soggetta a un vincolo di tipo elenco, inserendo in modo automatico delle clausole SQL da parte dell'ambiente, per filtrare gli elementi della tabella
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
0 | No |
1 | Si |
NOLOCK
Indica se effettuare la lettura dei dati senza lock.
Corrisponde all'applicazione della clausola WITH (NOLOCK) su tutte le tabelle SQL presenti nella query.
ERRORE
Consente al programma di intercettare e gestire l'errore restituito dalla funzione.
Utilizzare uno dei metodi GetLastError*() della classe BCContextInfo per ottenere le informazioni dell'errore.
Esempi
Definizione su colonne e su condizioni
DIM idQueryPrincipale[INT]
DIM idSubQueryCol[INT]
DIM idSubQueryWhere[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
' Definizione della subquery per la colonna NumeroIndirizzi
'@DEFSUBQUERY IDQUERY[idSubQueryCol] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryCol] TABELLA[BLDINDCLIFOR]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryCol] ESPR[COUNT(BLDINDCLIFOR.NPR) AS [NumeroIndirizziSubQ]]
'@DEFQUERYWHERE IDQUERY[idSubQueryCol] ESPR[BLDINDCLIFOR.COD = BLDCLIFOR.COD]
' Definizione della subquery per la condizione nella clausola WHERE
'@DEFSUBQUERY IDQUERY[idSubQueryWhere] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryWhere] TABELLA[BLDTESTATA]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryWhere] ESPR[COUNT(BLDTESTATA.IDDOC) AS [NumeroDocumenti]]
'@DEFQUERYWHERE IDQUERY[idSubQueryWhere] ESPR[BLDCLIFOR.COD = BLDTESTATA.INTEST]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[BLDCLIFOR]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDCLIFOR.RS1 AS [RagioneSociale]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQueryPrincipale] ESPR[SUBQ(idSubQueryCol) AS [NumeroIndirizzi] FMT[NUMERICO[2]]]
'@DEFQUERYWHERE IDQUERY[idQueryPrincipale] ESPR[SUBQ(idSubQueryWhere) > 10]
' Statement SQL generato
'
' SELECT
' BLDClientiFornitori.RagioneSociale1 AS [RagioneSociale]
' ,(SELECT
' COUNT(BLDIndirizziCliFor.Nrp) AS [NumeroIndirizziSubQ]
' FROM BLDIndirizziCliFor AS [BLDIndirizziCliFor]
' WHERE ((BLDIndirizziCliFor.CodCliFor = BLDClientiFornitori.CodCliFor))
' AND (BLDIndirizziCliFor.DBGruppo = 'GG'))
' AS [NumeroIndirizzi]
' FROM BLDClientiFornitori AS [BLDClientiFornitori]
' WHERE (
' ((SELECT
' COUNT(BLDTestate.IDD) AS [NumeroDocumenti]
' FROM BLDTestate AS [BLDTestate]
' WHERE ((BLDClientiFornitori.CodCliFor = BLDTestate.CodCliFor))
' AND (BLDTestate.DBGruppo = 'GG'))
' > 10
' )
' )
' AND (BLDClientiFornitori.DBGruppo = 'GG')
'
' Risultato della query
'
' RagioneSociale NumeroIndirizzi
' ----------------- ------------------
' Cliente 02 2
' Cliente 03 2
' Cliente 04 1
' Cliente 05 1
' Cliente 06 1
Definizione di subquery annidate
DIM idQueryPrincipale[INT]
DIM idSubQueryFiltro[INT]
DIM idSubQueryCond[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
'#region subquery condizione
'@DEFSUBQUERY IDQUERY[idSubQueryCond] IDQUERYPADRE[idQueryPrincipale]
'#region subquery filtro innestata
'@DEFSUBQUERY IDQUERY[idSubQueryFiltro] IDQUERYPADRE[idSubQueryCond]
' Definizione della subquery per il filtro della subquery principale
'@DEFQUERYFROM IDQUERY[idSubQueryFiltro] TABELLA[BLDCLIFOR]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryFiltro] ESPR[BLDCLIFOR.COD AS [CodCliFor]]
'@DEFQUERYWHERE IDQUERY[idSubQueryFiltro] ESPR[BLDCLIFOR.TIPSOG = 3]
'#endregion
' Definizione della subquery per la condizione della query principale
'@DEFQUERYFROM IDQUERY[idSubQueryCond] TABELLA[BLDINDCLIFOR]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idSubQueryCond] ESPR[COUNT(BLDINDCLIFOR.NPR) AS [NumeroIndirizziSubQ] FMT[NUMERICO[2]]]
'@DEFQUERYWHERE IDQUERY[idSubQueryCond] ESPR[BLDINDCLIFOR.COD IN (SUBQ(idSubQueryFiltro)) And BLDCLIFOR.COD = BLDINDCLIFOR.COD]
'#endregion
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[BLDCLIFOR]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDCLIFOR.RS1 AS [RagioneSociale1]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQueryPrincipale] ESPR[SUBQ(idSubQueryCond) AS [NumeroIndirizzi] FMT[NUMERICO[2]]]
'@DEFQUERYWHERE IDQUERY[idQueryPrincipale] ESPR[BLDCLIFOR.TIPANA = 0]
' Statement SQL generato
'
' SELECT
' BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,(SELECT
' (SELECT
' CASE
' WHEN CONVERT(VARCHAR(255), BLDMacrofamiglie.DataFineVal) = '1800-01-01' THEN 0
' ELSE 1
' END AS [flagValidNested]
' FROM BLDMacrofamiglie AS [BLDMacrofamiglie]
' WHERE ((BLDMacrofamiglie.CodMacrofamiglia = BLDFamiglie.CodMacrofamiglia))
' AND (BLDMacrofamiglie.DBGruppo = 'GG'))
' AS [flagValid]
' FROM BLDFamiglie AS [BLDFamiglie]
' WHERE ((BLDFamiglie.CodFamiglia = BLDArticoli.CodFamiglia))
' AND (BLDFamiglie.DBGruppo = 'GG'))
' AS [MacroFamigliaValida]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (
' (
' ((SELECT
' (SELECT
' CASE
' WHEN CONVERT(VARCHAR(255), BLDMacrofamiglie.DataFineVal) = '1800-01-01' THEN 0
' ELSE 1
' END AS [flagValidNested]
' FROM BLDMacrofamiglie AS [BLDMacrofamiglie]
' WHERE ((BLDMacrofamiglie.CodMacrofamiglia = BLDFamiglie.CodMacrofamiglia))
' AND (BLDMacrofamiglie.DBGruppo = 'GG'))
' AS [flagValid]
' FROM BLDFamiglie AS [BLDFamiglie]
' WHERE ((BLDFamiglie.CodFamiglia = BLDArticoli.CodFamiglia))
' AND (BLDFamiglie.DBGruppo = 'GG'))
' ) = 1
' )
' )
' AND (BLDArticoli.DBGruppo = 'GG')
' ORDER BY [CodArt] ASC
'
' Risultato della query
'
' CodArt DesArt MacrofamigliaValida
' --------- --------------- ------------------
' 001 Articolo 001 1
' 002 Articolo 002 1
' 003 Articolo 003 1
' 004 Articolo 004 1
' 005 Articolo 005 1
' 006 Articolo 006 1
' 007 Articolo 007 1
' 008 Articolo 008 1
' 009 Articolo 009 1
' 011 Articolo 011 1
Definizione con subquery colonnare
DIM idQueryPrincipale[INT]
DIM idSubQueryPrezUnit[INT]
DIM idSubQueryPrezTot[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
' Definizione della subquery per la colonna PrezzoUnitarioScontato
'@DEFSUBQUERY IDQUERY[idSubQueryPrezUnit] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryPrezUnit] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryPrezUnit] ESPR[SUM(BLDART.QUA) AS [NumTotArtSubQ]]
' Definizione della subquery per la colonna PrezzoTotale
'@DEFSUBQUERY IDQUERY[idSubQueryPrezTot] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryPrezTot] TABELLA[BLDART]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idSubQueryPrezTot] ESPR[SUM(BLDART.PREZZO) * [NumeroTotaleArticoli] AS[PreTotArtSubQ] FMT[NUMERICO[8,2]]]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDART.DES AS [DesArt]]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDART.PREZZO AS [Prezzo]]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDART.QUA AS [MagQuantita]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQueryPrincipale] ESPR[SUBQ(idSubQueryPrezUnit) AS [NumeroTotaleArticoli] FMT[NUMERICO[5,2]]]
'@DEFQUERYCOMPUTEDCOLUMN IDQUERY[idQueryPrincipale] ESPR[SUBQ(idSubQueryPrezTot) AS [PrezzoTotaleArticoli] FMT[NUMERICO[8,2]]]
' Statement SQL generato
'
' SELECT BLDArticoli.DesArt AS [DesArt]
' ,BLDArticoli.Prezzo AS [Prezzo]
' ,BLDArticoli.MagQuantita AS [MagQuantita]
' ,(
' SELECT SUM(BLDArticoli_1.MagQuantita) AS [NumTotArtSubQ]
' FROM BLDArticoli AS [BLDArticoli_1]
' WHERE (BLDArticoli_1.DBGruppo = 'GG')
' ) AS [NumeroTotaleArticoli]
' ,(
' SELECT SUM(BLDArticoli_1.Prezzo) * (
' (
' SELECT SUM(BLDArticoli_1.MagQuantita) AS [NumTotArtSubQ]
' FROM BLDArticoli AS [BLDArticoli_1]
' WHERE (BLDArticoli_1.DBGruppo = 'GG')
' )
' ) AS [PreTotArtSubQ]
' FROM BLDArticoli AS [BLDArticoli_1]
' WHERE (BLDArticoli_1.DBGruppo = 'GG')
' ) AS [PrezzoTotaleArticoli]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (BLDArticoli.DBGruppo = 'GG')
'
' Risultato della query
'
' DesArt Prezzo MagQuantita NumeroTotaleArticoli PrezzoTotaleArticoli
' --------------- --------- -------------- ----------------------- -----------------------
' Articolo 001 120.00 78 832 1131852.8001
' Articolo 002 134.00 87 832 1131852.8002
' Articolo 003 125.00 81 832 1131852.8003
' Articolo 007 3.23 2 832 1131852.8001
' Articolo 008 3.10 2 832 1131852.8002
' Articolo 009 2.78 1 832 1131852.8003
' Articolo 012 32.00 20 832 1131852.8003
' Articolo 013 45.00 29 832 1131852.8001
' Articolo 014 35.00 22 832 1131852.8002
' Articolo 015 21.00 13 832 1131852.8003
' ...
Definizione su condizioni
DIM idQueryPrincipale[INT]
DIM idSubQuery[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
' Definizione della subquery per il filtro su CodFamiglia
'@DEFSUBQUERY IDQUERY[idSubQuery] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQuery] TABELLA[BLDFAMIGLIA]
'@DEFQUERYCOLUMN IDQUERY[idSubQuery] ESPR[BLDFAMIGLIA.COD AS [CodFamigliaSubQ]]
'@DEFQUERYWHERE IDQUERY[idSubQuery] ESPR[[CodFamigliaSubQ] < "04"]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDART.PREZZO AS [Prezzo]] _
ESPR[BLDART.QUA AS [MagQuantita]] _
ESPR[BLDART.CODFAM AS [CodFamiglia]]
'@DEFQUERYWHERE IDQUERY[idQueryPrincipale] ESPR[[CodFamiglia] IN (SUBQ(idSubQuery))]
'@DEFQUERYORDERBY IDQUERY[idQueryPrincipale] ESPR[[DesArt]]
' Statement SQL generato
'
' SELECT BLDArticoli.DesArt AS [DesArt]
' ,BLDArticoli.Prezzo AS [Prezzo]
' ,BLDArticoli.MagQuantita AS [MagQuantita]
' ,BLDArticoli.CodFamiglia AS [CodFamiglia]
' FROM BLDArticoli AS [BLDArticoli]
' WHERE (
' (
' (BLDArticoli.CodFamiglia) IN (
' (
' SELECT BLDFamiglie.CodFamiglia AS [CodFamigliaSubQ]
' FROM BLDFamiglie AS [BLDFamiglie]
' WHERE (((BLDFamiglie.CodFamiglia) < '04'))
' AND (BLDFamiglie.DBGruppo = 'GG')
' )
' )
' )
' )
' AND (BLDArticoli.DBGruppo = 'GG')
' ORDER BY [DesArt] ASC
'
' Risultato della query
'
' DesArt Prezzo MagQuantita CodFamiglia
' --------------- --------- -------------- -----------------------
' Articolo 001 120.00 78 01
' Articolo 002 134.00 87 02
' Articolo 003 125.00 81 03
' Articolo 007 3.23 2 01
' Articolo 008 3.10 2 02
' Articolo 009 2.78 1 03
' Articolo 012 32.00 20 03
' Articolo 013 45.00 29 01
' Articolo 014 35.00 22 02
' Articolo 015 21.00 13 03
' ...
Definizione per join
DIM idQueryPrincipale[INT]
DIM idSubQueryBLDRIGA[INT]
DIM idSubQueryBLDART[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
' Definizione della subquery per la tabella BLDRIGA
'@DEFSUBQUERY IDQUERY[idSubQueryBLDRIGA] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryBLDRIGA] TABELLA[BLDRIGA]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryBLDRIGA] ESPR[BLDRIGA.IDDOC AS [IDDSubQR]] _
ESPR[BLDRIGA.IMPTOT AS [ImportoUdCSubQR]] _
ESPR[BLDRIGA.CODART AS [CodArtSubQR]]
' Definizione della subquery per la tabella BLDART
'@DEFSUBQUERY IDQUERY[idSubQueryBLDART] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryBLDART] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryBLDART] ESPR[BLDART.COD AS [CodArtSubQA]] _
ESPR[BLDART.DES AS [DesArtSubQA]]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[BLDTESTATA]
'@DEFQUERYJOIN IDQUERY[idQueryPrincipale] TABELLA[SUBQ(idSubQueryBLDRIGA) AS [SubQRighe]] TABELLAPADRE[BLDTESTATA] _
REL[[SubQRighe].IDDSubQR = BLDTESTATA.IDDOC] _
OPERATOREJOIN["INNER"]
'@DEFQUERYJOIN IDQUERY[idQueryPrincipale] TABELLA[SUBQ(idSubQueryBLDART) AS [SubQArticoli]] TABELLAPADRE[[SubQRighe]] _
REL[[SubQArticoli].CodArtSubQA = [SubQRighe].CodArtSubQR] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[BLDTESTATA.IDDOC AS [IDD]] _
ESPR[BLDTESTATA.DATDOC AS [DataDoc]]_
ESPR[[SubQArticoli].DesArtSubQA AS [DesArt]] _
ESPR[[SubQRighe].ImportoUdCSubQR AS [ImportoUdC]]
'@DEFQUERYWHERE IDQUERY[idQueryPrincipale] ESPR[[IDD] = 2]
' Statement SQL generato
'
' SELECT BLDTestate.IDD AS [IDD]
' ,BLDTestate.DataDoc AS [DataDoc]
' ,SubQArticoli.DesArtSubQA AS [DesArt]
' ,SubQRighe.ImportoUdCSubQR AS [ImportoUdC]
' FROM BLDTestate AS [BLDTestate]
' INNER JOIN (
' SELECT BLDRighe.DBGruppo AS [DBGruppo]
' ,BLDRighe.IDD AS [IDDSubQR]
' ,BLDRighe.ImportoUdC AS [ImportoUdCSubQR]
' ,BLDRighe.CodArt AS [CodArtSubQR]
' FROM BLDRighe AS [BLDRighe]
' ) AS [SubQRighe] ON (
' SubQRighe.IDDSubQR = BLDTestate.IDD
' AND (SubQRighe.DBGruppo = BLDTestate.DBGruppo)
' )
' INNER JOIN (
' SELECT BLDArticoli.DBGruppo AS [DBGruppo]
' ,BLDArticoli.CodArt AS [CodArtSubQA]
' ,BLDArticoli.DesArt AS [DesArtSubQA]
' FROM BLDArticoli AS [BLDArticoli]
' ) AS [SubQArticoli] ON (
' SubQArticoli.CodArtSubQA = SubQRighe.CodArtSubQR
' AND (SubQArticoli.DBGruppo = SubQRighe.DBGruppo)
' )
' WHERE (((BLDTestate.IDD) = 2))
' AND (BLDTestate.DBGruppo = 'GG')
'
' Risultato della query
'
' IDD DataDoc DesArt ImportoUdC
' ------ ------------- --------------- -------------
' 2 2021-06-01 Articolo 001 500.0000
' 2 2021-06-01 Articolo 001 3000.0000
' 2 2021-06-01 Articolo 022 2.0000
Definizione per join e from
DIM idQueryPrincipale[INT]
DIM idSubQueryBLDRIGA[INT]
DIM idSubQueryBLDTESTATA[INT]
DIM idSubQueryBLDART[INT]
'@DEFQUERY IDQUERY[idQueryPrincipale] NOME["BCRIF_DEFSUBQUERY_2"]
' Definizione della subquery per la tabella BLDTESTATA
'@DEFSUBQUERY IDQUERY[idSubQueryBLDTESTATA] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryBLDTESTATA] TABELLA[BLDTESTATA]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryBLDTESTATA] ESPR[BLDTESTATA.IDDOC AS [IDDSubQT]] _
ESPR[BLDTESTATA.DATDOC AS [DataDocSubQT]]
' Definizione della subquery per la tabella BLDRIGA
'@DEFSUBQUERY IDQUERY[idSubQueryBLDRIGA] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryBLDRIGA] TABELLA[BLDRIGA]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryBLDRIGA] ESPR[BLDRIGA.IDDOC AS [IDDSubQR]] _
ESPR[BLDRIGA.IMPTOT AS [ImportoUdCSubQR]] _
ESPR[BLDRIGA.CODART AS [CodArtSubQR]]
' Definizione della subquery per la tabella BLDART
'@DEFSUBQUERY IDQUERY[idSubQueryBLDART] IDQUERYPADRE[idQueryPrincipale]
'@DEFQUERYFROM IDQUERY[idSubQueryBLDART] TABELLA[BLDART]
'@DEFQUERYCOLUMN IDQUERY[idSubQueryBLDART] ESPR[BLDART.COD AS [CodArtSubQA]] _
ESPR[BLDART.DES AS [DesArtSubQA]]
' Definizione della query principale
'@DEFQUERYFROM IDQUERY[idQueryPrincipale] TABELLA[SUBQ(idSubQueryBLDTESTATA) AS [SubQTestate]]
'@DEFQUERYJOIN IDQUERY[idQueryPrincipale] TABELLA[SUBQ(idSubQueryBLDRIGA) AS [SubQRighe]] TABELLAPADRE[[SubQTestate]] _
REL[[SubQRighe].IDDSubQR = [SubQTestate].IDDSubQT] _
OPERATOREJOIN["INNER"]
'@DEFQUERYJOIN IDQUERY[idQueryPrincipale] TABELLA[SUBQ(idSubQueryBLDART) AS [SubQArticoli]] TABELLAPADRE[[SubQRighe]] _
REL[[SubQArticoli].CodArtSubQA = [SubQRighe].CodArtSubQR] _
OPERATOREJOIN["INNER"]
'@DEFQUERYCOLUMN IDQUERY[idQueryPrincipale] ESPR[[SubQTestate].IDDSubQT AS [IDD]] _
ESPR[[SubQTestate].DataDocSubQT AS [DataDoc]] _
ESPR[[SubQArticoli].DesArtSubQA AS [DesArt]] _
ESPR[[SubQRighe].ImportoUdCSubQR AS [ImportoUdC]]
'@DEFQUERYWHERE IDQUERY[idQueryPrincipale] ESPR[[IDD] = 3]
' Statement SQL generato
'
' SELECT SubQTestate.IDDSubQT AS [IDD]
' ,SubQTestate.DataDocSubQT AS [DataDoc]
' ,SubQArticoli.DesArtSubQA AS [DesArt]
' ,SubQRighe.ImportoUdCSubQR AS [ImportoUdC]
' FROM (
' SELECT BLDTestate.DBGruppo AS [DBGruppo]
' ,BLDTestate.IDD AS [IDDSubQT]
' ,BLDTestate.DataDoc AS [DataDocSubQT]
' FROM BLDTestate AS [BLDTestate]
' ) AS [SubQTestate]
' INNER JOIN (
' SELECT BLDRighe.DBGruppo AS [DBGruppo]
' ,BLDRighe.IDD AS [IDDSubQR]
' ,BLDRighe.ImportoUdC AS [ImportoUdCSubQR]
' ,BLDRighe.CodArt AS [CodArtSubQR]
' FROM BLDRighe AS [BLDRighe]
' ) AS [SubQRighe] ON (
' SubQRighe.IDDSubQR = SubQTestate.IDDSubQT
' AND (SubQRighe.DBGruppo = SubQTestate.DBGruppo)
' )
' INNER JOIN (
' SELECT BLDArticoli.DBGruppo AS [DBGruppo]
' ,BLDArticoli.CodArt AS [CodArtSubQA]
' ,BLDArticoli.DesArt AS [DesArtSubQA]
' FROM BLDArticoli AS [BLDArticoli]
' ) AS [SubQArticoli] ON (
' SubQArticoli.CodArtSubQA = SubQRighe.CodArtSubQR
' AND (SubQArticoli.DBGruppo = SubQRighe.DBGruppo)
' )
' WHERE (((SubQTestate.IDDSubQT) = 3))
' AND (SubQTestate.DBGruppo = 'GG')
'
' Risultato della query
'
' IDD DataDoc DesArt ImportoUdC
' ------ ------------- --------------- -------------
' 3 2021-03-03 Articolo 002 5543.0000
' 3 2021-03-03 Articolo 003 2500.0000
Riferimenti
Le query in BC
Le subquery in BC
Le common table expressions (CTEs) in BC