Indice

🟦Nuova 🟩Pronta 🟨Bozza 🟥Da scrivere

Viste con combinazioni di Filtri

Filtri in AND e OR logico tra loro.
Aggiornata il:
Stato: 🟩Pronta

Filtri in AND logico tra loro

Nelle Guide precedenti abbiamo visto come selezionare le Entità da elencare in una Vista con i Filtri della sezione Criteri del filtro. Ad esempio, abbiamo visto che nella Vista "Tuoi Attrezzi" della app "Vicinato" sono necessari i seguenti Filtri:

I Filtri elencati nella sezione Criteri del filtro sono considerati in AND logico tra loro: una Entità è mostrata solo se soddisfa tutti i Filtri. Quindi i Filtri sopra elencati corrispondono a questa logica:

 (Tipo di contenuto=Attrezzo) AND (Stato dell'Attrezzo=Prestabile) AND (Utente corrente = Proprietario dell'Attrezzo)

Filtri in OR logico tra loro

Nella costruzione di alcune Viste potremmo invece la necessità di mostrare Entità che soddisfano un Filtro oppure un altro Filtro. Ad esempio, nella app "Vicinato" ci potrebbe servire una Vista che mostri l'elenco delle Richieste all'Utente che chiede l'Attrezzo (Utente Richiedente) oppure all'Utente che presta l'Attrezzo (Utente Proprietario), ma nascondere l'elenco a tutti gli Utenti diversi dal Richiedente e dal Proprietario. Se in questa Vista aggiungiamo alla sezione Criteri del filtro un Filtro "Utente corrente = Richiedente" e un Filtro "Utente corrente = Proprietario" non vedremo nessuna Richiesta, perché i due Filtri sono in AND logico tra loro ma nessuno Utente è contemporaneamente Proprietario dell'Attrezzo e Richiedente dello stesso Attrezzo.

In un caso come questo, abbiamo bisogno che i due Filtri siano in OR logico tra loro, in modo che le Entità siano mostrate se è soddisfatto almeno uno dei Filtri, cioè:

(Utente corrente=Richiedente) OR (Utente corrente=Proprietario)

Come comporre nella Vista i Filtri in AND / OR logico tra loro

In realtà le Viste supportano nativamente sia Filtri in AND logico tra loro (è il default) sia in OR logico tra loro, sia in combinazione più complesse di AND e OR. Torniamo all'esempio della Vista che deve elencare le Richieste al Richiedente e al Proprietario ma non agli altri Utenti. Per ottenere questo effetto occorre combinare i Filtri in questo modo:

(Tipo di contenuto=Richiesta) AND ((Utente corrente = Richiedente) OR (Utente corrente = Proprietario))

La combinazione ((Utente corrente = Richiedente) OR (Utente corrente = Proprietario)) è soddisfatta se l'Utente corrente è il Richiedente oppure è il Proprietario, ma non è soddisfatta se l'Utente corrente non è né Richiedente né Proprietario. Vediamo come descrivere questo caso (il passaggio specifico è quello in grassetto):