Passa al contenuto principale

DEFQUERYJOIN

AliasJOIN31.1DesktopWeb

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.

suggerimento

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

ParametroDefinizioneI/OInformazioniVersione traduttoreSMP
IDQUERYLongINDesktopWeb
TABELLAINDesktopWeb
TABELLAPADREINDesktopWeb
RELINDesktopWeb
OPERATOREJOINStringaINObbligatorioDesktopWeb
NOMERELAZIONEStringaINDesktop
VINCOLIINDesktopWeb
CLONESTAZIONEInteroINValore non necessario31.2Desktop
ERROREInteroINDesktopWeb

IDQUERY

LongINInputValore non necessarioValore non necessarioDesktopWeb

Identificatore della query ottenuto tramite @DEFQUERY.

TABELLA

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

Nome del DFX da cui reperire le caratteristiche della tabella.

TABELLAPADRE

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

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

INInputValore non necessarioValore non necessarioDesktopWeb

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

StringaINInputObbligatorioObbligatorioValore non necessarioValore non necessarioDesktopWeb

Indica il tipo di JOIN da applicare alle tabelle in relazione.

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

ValoreDescrizione
INNERDefinizione operatore INNER JOIN
JOINDefinizione operatore INNER JOIN
LEFTDefinizione operatore LEFT OUTER JOIN
RIGHTDefinizione operatore RIGHT OUTER JOIN
FULLDefinizione operatore FULL OUTER JOIN
CROSSDefinizione operatore CROSS JOIN (utilizzabile solo su @DEFQUERYTABLE)

NOMERELAZIONE

StringaINInputValore non necessarioValore non necessarioDesktop

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

INInputValore non necessarioValore non necessarioDesktopWeb
SottoParametri

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

31.2InteroINInputDesktop

Indica se la tabella da utilizzare deve essere quella definita come Clone per Stazione.

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

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