Passa al contenuto principale

DEFSUBQUERY

31.1DesktopWeb

Inizializza una subquery per la sua successiva definizione.
La subquery deve essere collegata alla query principale definita in precedenza tramite la specifica '@DEFQUERY.

Parametri

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongOUTDesktopWeb
IDQUERYPADRELongINDesktopWeb
QUERYClasse BCQUERYRef31.3DesktopWeb
QUERYPADREClasse BCQUERYRef31.3DesktopWeb
ELIMINADUPLICATIInteroINDesktopWeb
MAXRECORDLongINDesktopWeb
MULTIGRUPPOInteroINDesktopWeb
MULTISTAZIONEInteroINDesktop
MULTIDOMINIOInteroINDesktopWeb
VINCOLIInteroINDesktopWeb
NOLOCKInteroINValore non necessario31.2DesktopWeb
ERROREInteroINDesktopWeb

IDQUERY

LongOUTOutputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query restituito dalla specifica DEFQUERY

IDQUERYPADRE

LongINInputValore non necessarioValore non necessarioDesktopWeb

Variabile che indica l'identificatore della query esterna che contiene la subquery (o sottoquery).

QUERY

31.3Classe BCQUERYRefReferenzaValore non necessarioValore non necessarioDesktopWeb

Identifica l'oggetto Query esterno della nostra subquery.

QUERYPADRE

31.3Classe BCQUERYRefReferenzaValore non necessarioValore non necessarioDesktopWeb

Identifica l'oggetto Querypadre esterno della nostra subquery.

ELIMINADUPLICATI

InteroINInputValore non necessarioValore non necessarioDesktopWeb

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:

ValoreDescrizione
0No
1Si

MAXRECORD

LongINInputValore non necessarioValore non necessarioDesktopWeb

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

InteroINInputValore non necessarioValore non necessarioDesktopWeb

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:

ValoreDescrizione
0Applica il filtro sul campo gruppo per le tabelle di gruppo
1Non applica il filtro sul campo gruppo per le tabelle di gruppo

MULTISTAZIONE

InteroINInputValore non necessarioValore non necessarioDesktop

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:

ValoreDescrizione
0viene applicato il filtro sul campo stazione per le tabelle che lo prevedono
1non viene applicato il filtro sul campo stazione per le tabelle che lo prevedono (legge tutto)

MULTIDOMINIO

InteroINInputValore non necessarioValore non necessarioDesktopWeb

Indica la possibilità di accedere ai record di una tabella relativi a più domini

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

ValoreDescrizione
0No
1Si

VINCOLI

InteroINInputValore non necessarioValore non necessarioDesktopWeb

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:

ValoreDescrizione
0No
1Si

NOLOCK

31.2InteroINInputDesktopWeb

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

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 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