DEFQUERYJOIN
Permette di definire le tabelle relazionate con la tabella principale della query.
La definizione delle tabelle avviene in modo gerarchico.
L'utilizzo della funzione, deve seguire, nell'ordine di definizione, la specifica @DEFQUERY.
Si definisce una @DEFQUERYJOIN per ogni tabella in relazione con la tabella principale definita in precedenza tramite la specifica @DEFQUERYFROM.
Le definizioni devono indicare il legame, ovvero la relazione con una tabella "padre" mediante il parametro REL.
Parametri
| Parametro | Definizione | I/O | Versione traduttore | SMP | |
|---|---|---|---|---|---|
| IDQUERY | Long | ||||
| TABELLA | |||||
| TABELLAPADRE | |||||
| REL | |||||
| OPERATOREJOIN | Stringa | ||||
| NOMERELAZIONE | Stringa | ||||
| VINCOLI | |||||
| CLONESTAZIONE | Intero | 31.2 | |||
| ERRORE | Intero |
IDQUERY
Identificatore della query ottenuto tramite @DEFQUERY.
TABELLA
Nome del DFX da cui reperire le caratteristiche della tabella.
TABELLAPADRE
Identifica la tabella padre alla quale viene aggiunta, in relazione, la tabella definita dal parametro TABELLA[].
È possibile indicare anche la funzione SUBQ(IdSubQuery) per poter utilizzare una subquery come tabella.
È possibile far riferimento ad una CTE precedentemente definita utilizzando il nome della CTE stessa con la sintassi [NomeCTE]
REL
La presenza del parametro REL definisce la relazione, in termini di uguaglianza dei campi, tra la tabella indicata in TABELLA[] e la tabella indicata in TABELLAPADRE[].
Integra la funzionalità della specifica @DEFQUERYREL.
Il parametro REL è opzionale se:
- è indicata la relazione mediante la specifica @DEFQUERYREL
- se non è indicato il parametro PADRE.
Diversamente è obbligatorio.
OPERATOREJOIN
Indica il tipo di JOIN da applicare alle tabelle in relazione.
Parametro con valori ammessi, si possono utilizzare i seguenti valori:
| Valore | Descrizione |
|---|---|
INNER | Definizione operatore INNER JOIN |
JOIN | Definizione operatore INNER JOIN |
LEFT | Definizione operatore LEFT OUTER JOIN |
RIGHT | Definizione operatore RIGHT OUTER JOIN |
FULL | Definizione operatore FULL OUTER JOIN |
CROSS | Definizione operatore CROSS JOIN (utilizzabile solo su @DEFQUERYTABLE) |
NOMERELAZIONE
Nome della relazione (codice) derivato dall'elenco relazioni previste per la tabella.
Il nome della relazione è visibile in gestione descrittori o nel programma di visualizzazione dello schema del dizionario dati (BCVSQLW).
Se non indicato la relazione deve essere esplicitata mediante i parametri TABELLAPADRE, TABELLA e REL.
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
CLONESTAZIONE
Indica se la tabella da utilizzare deve essere quella definita come Clone per Stazione.
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
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYJOIN_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDVAR] TABELLAPADRE[BLDART] _
REL[BLDVAR.CODART = BLDART.COD] _
OPERATOREJOIN[#INNER]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDVAR.COD AS [CodVarianteArt]] _
ESPR[BLDVAR.DES AS [DesVariante]]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDVarianti.CodVarianteArt AS [CodVarianteArt]
' ,BLDVarianti.DesVariante AS [DesVariante]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDVarianti AS [BLDVarianti] ON (
' BLDVarianti.CodArt = BLDArticoli.CodArt
' AND (BLDVarianti.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
'
' Risultato della query
'
' CodArt CodVarianteArt DesVariante
' --------- ----------------- ---------------------------
' 001 001 Variante 001
' 001 002 Variante 002
' 001 003 Variante 003
' 005 VAR01 Variante 01
' 018 001 Variante 001
' 018 002 Variante 002
' 018 003 Variante 003
' MAT1 MAT1_BLU Articolo di colore Blu
' MAT1 MAT1_ROSSO Articolo di colore Rosso
Definizione con espressione nel parametro REL
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYJOIN_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDFAMIGLIA] TABELLAPADRE[BLDART] _
REL[BLDFAMIGLIA.COD = BLDART.ESPR[RIGHT$(BLDART.COD, 2)]] _
OPERATOREJOIN[#INNER]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]] _
ESPR[BLDFAMIGLIA.DES AS [DesFamiglia]]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDFamiglie.CodFamiglia AS [CodFamiglia]
' ,BLDFamiglie.DesFamiglia AS [DesFamiglia]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDFamiglie AS [BLDFamiglie] ON (
' BLDFamiglie.CodFamiglia = RIGHT(BLDArticoli.CodArt, 2)
' AND (BLDFamiglie.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
'
' Risultato della query
'
' CodArt CodFamiglia DesFamiglia
' --------- -------------- ---------------------------
' 001 01 Famiglia 01
' 002 02 Famiglia 02
' 003 03 Famiglia 03
' 004 04 Famiglia 04
' 005 05 Famiglia 05
' 006 06 Famiglia 06
' 007 07 Famiglia 07
' 008 08 Famiglia 08
' 009 09 Famiglia 09
Definizione con costante nel parametro REL
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYJOIN_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDFAMIGLIA] TABELLAPADRE[BLDART] _
REL[BLDFAMIGLIA.COD=BLDART.CONST["01"]] _
OPERATOREJOIN[#INNER]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,BLDFamiglie.CodFamiglia AS [CodFamiglia]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDFamiglie AS [BLDFamiglie] ON (
' BLDFamiglie.CodFamiglia = '01'
' AND (BLDFamiglie.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
'
' Risultato della query
'
' CodArt DesArt CodFamiglia
' --------- --------------- --------------
' ...
' 010 Articolo 010 01
' 011 Articolo 011 01
' 012 Articolo 012 01
' 013 Articolo 013 01
' 014 Articolo 014 01
' 015 Articolo 015 01
' 016 Articolo 016 01
' 017 Articolo 017 01
' 018 Articolo 018 01
' 019 Articolo 019 01
' ...
Definizione con altri operatori di confronto
'@DEFQUERY IDQUERY[idQry] NOME["BCRIF_DEFQUERYJOIN_2"]
'@DEFQUERYFROM IDQUERY[idQry] TABELLA[BLDART]
'@DEFQUERYJOIN IDQUERY[idQry] TABELLA[BLDFAMIGLIA] TABELLAPADRE[BLDART] _
REL[BLDFAMIGLIA.COD = BLDART.CODFAM And "010" >= BLDART.COD] _
OPERATOREJOIN[#INNER]
'@DEFQUERYCOLUMN IDQUERY[idQry] ESPR[BLDART.COD AS [CodArt]] _
ESPR[BLDART.DES AS [DesArt]] _
ESPR[BLDFAMIGLIA.COD AS [CodFamiglia]]
' Statement SQL generato
'
' SELECT BLDArticoli.CodArt AS [CodArt]
' ,BLDArticoli.DesArt AS [DesArt]
' ,BLDFamiglie.CodFamiglia AS [CodFamiglia]
' FROM BLDArticoli AS [BLDArticoli]
' INNER JOIN BLDFamiglie AS [BLDFamiglie] ON (
' BLDFamiglie.CodFamiglia = BLDArticoli.CodFamiglia
' AND '010' >= BLDArticoli.CodArt
' AND (BLDFamiglie.DBGruppo = BLDArticoli.DBGruppo)
' )
' WHERE (BLDArticoli.DBGruppo = 'GG')
'
' Risultato della query
'
' CodArt DesArt CodFamiglia
' --------- --------------- --------------
' 007 Articolo 007 01
' 001 Articolo 001 01
' 002 Articolo 002 02
' 008 Articolo 008 02
' 003 Articolo 003 03
' 009 Articolo 009 03
' 004 Articolo 004 04
' 005 Articolo 005 05
' 006 Articolo 006 05