Filtri SQL

 


L'SQL (Structured Query Language) è un linguaggio di programmazione utilizzato per creare, modificare e gestire i dati dei database relazionali. La stessa tipologia di database utilizzata dalla piattaforma Nios4 sui vari dispositivi.

Anche se per ogni sistema operativo viene usato uno specifico tipo di database, ad esempio per Windows si utilizza Access o SQL Server, mentre per Android e IOS i database SQLite, tutti comunque utilizzando lo stesso linguaggio.

Nios4 è progettato per utilizzare il linguaggio solo con i comandi di base, questo perchè ogni sistema  ha delle differenze in alcuni comandi o parole chiavi.

In pratica i programmi di Nios4 usano questo linguaggio SQL per dialogare e modificare la struttura e i dati contenuti nei propri database. Ad esempio quando viene salvata una scheda Nios4 prepara il comando in SQL e poi lo invia al database per eseguire l'effettiva operazione. Se l'operazione è stata eseguita correttamente Nios4 riceverà la conferma positiva, oppure l'errore generato.

Anche quando vengono letti i dati succede la stessa cosa. In questo caso Nios4 prepara il comando per per la richiesta. Se il comando è scritto in modo corretto allora riceverà i dati richiesti, altrimenti anche in questo caso ritornerà un errore.

I filtri applicabili

I filtri o "filtri sql" applicabili nei parametri dei vari componenti di Nios4 servono per poter eseguire delle ricerche più specifiche sui dati da estrarre e visualizzare.

Senza dilungarci sulla spiegazione del linguaggio questo è il comando SQL dato da Nios4 per estrarre dal database i dati che verranno visualizzati su una sezione Anagrafica:

SELECT * FROM customers WHERE eli = 0 AND arc = 0

Leggendo esplicitamente il comando stiamo dicendo al database di selezionare (SELECT) tutti i campi della tabella customers (*) dove eli = 0, ossia il record non deve essere nel cestino e arc = 0, ossia non deve essere contenuto in un sotto archivio.

Se nei parametri della sezione, inseriamo sul filtro nation='italy' il comando sql diventerà

SELECT * FROM customers WHERE eli = 0 AND arc = 0 AND (nation='italy')

In questo modo ritorneranno solo i record che soddisfano i primi filtri e che hanno come valore sul campo nation "italy"

Quindi i filtri sono segmenti aggiunti in coda al comando SQL. Per questo devono essere sempre dei filtri su campi presenti nella tabella selezionata con dei valori di ricerca conosciuti.

Sotto tabelle

Le sotto tabelle posseggono anche loro dei filtri, chiamati condizioni principali e secondarie. Queste a differenza dei filtri standard possiedono la caratteristica di poter inserire un valore dinamico. Il valore dinamico è il valore di un campo presente nella scheda corrente.

Riprendendo l'esempio di prima diciamo che abbiamo un campo sottotabella che permette di selezionare il cliente all'interno di un documento. La comando SQL sarà identica a quella precedente:

SELECT * FROM customers WHERE eli = 0 AND arc = 0

Ora all'interno della condizione possiamo inserire lo stesso filtro sulla nazione o impostarlo in modo che il programma cerchi il valore da utilizzare da solo. Quindi dentro alla condizione del campo scriviamo nation=[order_nation]

In questo caso il comando diventerà:

SELECT * FROM customers WHERE eli = 0 AND arc = 0 AND (nation=[order_nation])

Impostata in questo modo stiamo dicendo a Nios4 di recuperare il valore dal campo order_nation presente sulla scheda attuale. Quindi se il valore del campo in quel momento sarà england il comando SQL diverrà automaticamente

SELECT * FROM customers WHERE eli = 0 AND arc = 0 AND (nation='england')

Questo significa che variando il valore del campo nella scheda aperta, cambiaranno anche i record presentati dalla sotto tabella.

Un'altra cosa da sapere e che il nome racchiuso tra le parentesi quadre informa il sistema di cercare il valore nella scheda corrente o sulla riga attualmente selezionata dove viene aperta la sottotabella.

Se la il campo sotto tabella è su una tabella aggiuntiva e si vuole recuperare un valore dalla scheda che la contiene occorrerà non usare le parentesti quadre [] ma le graffe {}.





 




Commenti