.. _user_handbook/table_manager/selection_view/query/plain_query: Query semplici ============== Il modo principale per effettuare una :ref:`interrogazione` , da una :ref:`Pagina per la gestione di tabella` , è lo strumento detto *Plain query* che si trova a sinistra nella *barra degli strumenti* sotto il titolo della pagina. Questo strumento permette di creare rapidamente una query ponendo una sola condizione. Tale condizione è costituita da - il campo di riferimento - eventualmente la negazione NOT - l'operatore - il valore di raffronto *Esempio*: **anno_nascita** **NOT** **<** 1980 Lo strumento *Plain query* è perciò costituito da: 1) Un menu che propone, non solo tutte le colonne della tabella principale, ma anche tutte le colonne delle tabelle in relazione ascendente o discendente. 2) Un piccolo menu per aggiungere o togliere l'operatore di Negazione NOT 3) Un menu che offre tutti gli operatori compatibili con il tipo di dato della colonna selezionata 4) Un campo input dove digitare il valore di raffronto 5) Un bottone di invio per eseguire la query .. image:: /_static/images/table_manager/selection_view/query/01_query2.png :width: 600px :align: center Il menu selezione campo ======================= Il campo di riferimento a cui applicare la condizione viene scelto da un menu composto da tutte le colonne proprie della tabela principale, comprese le aggregazioni di campi (ovvero i metadati come ad esempio *Sistema*, dove i dati vengono raggruppati in un'unica informazione), e le colonne delle tabelle in relazione ascendente o discendente. .. image:: /_static/images/table_manager/selection_view/query/01_aggregazioni.png :width: 600px :align: center .. hint:: L'elenco che compare nel menu a discesa è generato automaticamente sulla base della struttura della tabella tenendo conto di tutte le relazioni. Se la visualizzazione è troppo articolata per l'utilizzo da parte dell'utente, si tenga presente che gli utenti di livello `superadmin` possono in qualunque modo definire le singole voci da visualizzare `personalizzando l'albero della Query `_ Le relazioni e le aggregazioni di campi all'interno del menu vengono precedute da una freccia che ne consente l'esplorazione. Nel momento in cui si esplode un campo della tabella principale in relazione con un'altra tabella, l'applicazione Genropy è in grado di eseguire la *Join*. Come anticipato le relazioni possono essere - ascendenti, ad es. in caso di tabella principale prodotto, una tabella in relazione ascendente è *Tipo prodotto* (il prodotto avvitatore appartiene alla tipologia utensileria/elettrici) .. image:: /_static/images/table_manager/selection_view/query/03_ascendente.png :width: 600px :align: center - discendenti, ad es. sempre nel caso della tabella principale prodotto un tabella in relazione discendente è *Fattura righe* (ovvero il prodotto quante volte è stato venduto) .. image:: /_static/images/table_manager/selection_view/query/02_discendente.png :width: 600px :align: center In entrambi i casi la relazione è di tipo uno a molti, ovvero più prodotti apparterrano alla stessa tipologia prodotto, e un prodotto sarà venduto n volte. Il NOT ======= Il not è un operatore logico di negazione booleano, che restituisce tutti i record che non corrispondono a quella condizione; viceversa se non selezionato. .. image:: /_static/images/table_manager/selection_view/query/04_not.png :width: 600px :align: center Gli operatori ============= Nel menu corrispondente vengono proposti tutti gli operatori di confronto compatibili con il tipo di dato della colonna scelta - se il tipo è data, data e ora, o numerico gli operatori sono: - = (uguale a) - > (maggiore di) - < (minore di) - >= (maggiore o uguale a ) - <= (minore o uguale a) - is null (se non ha un valore) - IN (contenuto all'interno di una lista di valori) - se il tipo è alfanumerico o testo oltre a quelli precedenti abbiamo: - contiene - inizia con - inizio parola - inizia con caratteri - nullo o vuoto - espressione regolare - tra - se il tipo è un booleano sono: - vero - falso Il valore di raffronto ====================== E' presente un campo di input dove l'utente digita il valore di raffronto coerente con il tipo di dato della colonna scelta. L'applicazione Genropy è in grado di tradurre il linguaggio naturale per i valori di raffronto il cui tipo di dato è una data. Quindi rispetto alla data di lavoro ( :ref:`Login/Logout` ), che il sistema prende come data solgia, è in grado di calcolare e tradurre: *Esempio*: **la data di lavoro è** 13/09/2018 +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *ieri* | il giorno precedente dalla data soglia | 12/09/2018 | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *oggi* | il giorno della data soglia | 13/09/2018 | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *domani* | il giorno successivo alla data soglia | 14/09/2018 | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *oggi -/+ numero* | il giorno indietro o avanti di n giorni dalla data soglia es. 10 g. | 03/09/2018 o 23/09/2018 | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *mese/questo-ultimo mese/ mese precedente??* | tutto il mese della data soglia | settembre | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *anno/questo-ultimo-prossimo anno/ anno precedente* |tutto l'anno della data soglia | ?? | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *settimana/questa-ultima settimana??* | la settimana della data soglia | dal 10 al 16/09/2018?? | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *mese prossimo* | tutto il mese successivo alla data soglia | ottobre | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ | *settimana prossima* | la settimana successiva alla data soglia | dal 17 al 23/09/2018 | +-----------------------------------------------------+---------------------------------------------------------------------+-------------------------+ Nel caso in cui l'operatore selezionato è IN, la lista di valori di raffronto nel campo di input va separata da una virgola *Esempio*: **clienti delle province** MI, TO, GE La query viene eseguita dando invio o premendo il bottone *interrogazione run* .. image:: /_static/images/table_manager/selection_view/query/05_invio.png :width: 50px :align: center Inoltre, se la colonna scelta è un campo di relazione e l'utente non ricorda i valori compilati per questa tabella, inserendo nel campo del valore di raffronto il simbolo *?* seguito da un termine che individua la colonna scelta, all'esecuzione della query verrà aperta una finestra di dialogo che avrà - per etichetta, il termine digitato nel valore di raffronto - e un campo menu con l'elenco dei dati compilati nella tabella in relazione Scelto il valore di raffronto cliccando su conferma i dati che soddisfano i requisiti dell'interrogazione saranno visualizzati nella :ref:`griglia` .. image:: /_static/images/table_manager/selection_view/query/07_query_.png :width: 600px :align: center Sequenze di interrogazioni ========================== Di default lo strumento Plain query non mantiene uno stato della selezione corrente. Per tanto ogni esecuzione di nuove :ref:`interrogazioni` va a creare una nuova selezione che va riempire :ref:`la griglia` , sostituendo la precedente. E' però possibile creare una sequenza di interrogazioni collegate tra loro, mantenendo uno stato della selezione corrente tra una query e l'altra. Per fare questo bisogna usare il menu popup che si trova a sinistra del Plain Query, prima del menu di selezione del campo. Di default questo menu mostra la voce Cerca, che serve a creare ogni volta una selezione nuova, ma è possibile invece scegliere altre opzioni - Unisci: con questa opzione la nuova interrogazione andrà ad aggiungere i record risultanti alla selezione corrente - Interseca: questa opzione farà sì che la nuova interrogazione contenga soltanto i record che della selezione corrente soddisfano anche la nuova condizione - Togli: con questa opzione si rimuovono i record dalla selezione corrente .. image:: /_static/images/table_manager/selection_view/query/06_sequenzeinterrogazione.png :width: 600px :align: center Seguono esempi