Impostare le ricerche in FileMaker con le relazioni

Un giorno un Guru con la G maiuscola, proprio come il suo nome di battesimo, mi disse: “Mah, io farei una banalissima autorelazione, un campo calcolato e una semplice ricerca per *. O c’è qualcosa che mi sfugge?”.

Ora vi racconto cosa si nasconde dietro questa enigmatica frase.

Il problema dei record non univoci

La mia situazione era la seguente. Ipotizziamo di avere la seguente serie di record:

immagine 1La mia necessità era trovare tutti i record contenenti i nomi di quelle persone che, pur ripetendosi più volte, avevano numeri diversi. Nell’esempio sopra riportato si trattava quindi di trovare i 4 record contenenti il nome “Pietro”, in quando il numero di telefono associato non era lo stesso per tutti e 4 i record. Non avevo però bisogno di trovare “Luca” o “Marco”, in quanto pur ripetendosi più volte questi ultimi avevano numeri di telefono univoci.

Il risultato che dovevo ottenere era questo:

immagine 2Come potevo fare?

Da parte mia avevo già messo in pista mirabolanti comandi “loop”, “trova”, etc. Avevo pensato: trovo tutti i record i cui nomi si ripetono con il comando “!”, poi metto in ordine per nome, faccio un bel loop e faccio passare uno ad uno i record, prendo per ogni record la variabile del nome chiamandola $nome, prendo la variabile del telefono chiamandola $telefono, vado al record successivo e se $nome = nome vedo se $telefono = telefono. Se uguale vado oltre, se diverso metto un flag in modo tale da riprendere il nome una volta finito il loop per poi ritrovare tutti i record con i nomi flaggati.

Insomma, un bel casino fatto e finito.

La parola al Guru

Ma ecco che il Guru appare e mi dice “...fare una bella relazione no?”.

Ecco a cosa alludeva:

immagine 3Oltre alla relazione, il Guru mi ha fatto aggiungere un campo calcolato che ho chiamato “chiave ricerca”, con appunto valorizzare il contenuto del campo “telefono” nella tabella autorelazionata. In altri termini, in uno specifico campo valorizzare i numeri telefonici a parità di nome con numero di telefono diverso (vedi sopra).

Il campo “chiave di ricerca” è stato così impostato:

immagine 4

A questo punto il gioco è fatto. Facendo una semplice ricerca inserendo il valore “*” nel campo “chiave ricerca” (ovvero cerco qualsiasi valore), ho ottenuto il risultato sperato.

immagine 5

In conclusione

Qual è l’insegnamento che possiamo trarre da questa piccola storia?

Prima di tutto, quello di valutare le relazioni in modo più ampio di quanto normalmente siamo abituati a fare. Non limitiamoci a pensare che una relazione tra due tabelle serva solo ad associare in modo canonico i relativi record (ad esempio, fattura e righe fattura, insegnante e alunni, etc.). Le relazioni possono rivelarsi utilissime anche per fare ricerche, magari sulla stessa tabella tramite autorelazione.

Teniamo presente inoltre che le relazioni si possono basare, oltre che sull’uguaglianza di due campi di confronto, anche su altri operatori. In termini più espliciti, oltre alla classica relazione campo A tabella 1 = campo B tabella 2 Filemaker offre la possibilità di mettere in pista relazioni del tipo campo A tabella 1 < campo B tabella 2, oppure campo A tabella 1 x  campo B tabella 2.

L’elenco degli operatori disponibili è qui di seguito riportato:

immagine 6
Come dicono i veri Guru, sforziamoci di usare le relazioni al meglio! Rendono più elegante ed efficace il nostro database, e soprattutto ci permettono di risparmiare tanto tempo e fatica. Senza contare che una relazione è quasi sempre più veloce di una ricerca, perché sfrutta indicizzazioni già esistenti.

Alle prese con un problema insormontabile in FileMaker? Raccontaci il tuo caso e trova la soluzione con il supporto degli altri Guru: scopri la comunità Filemaker su Guru Corner!




Risposte
Visite
Domanda
1
risposta
79
vis.
domanda inviata 11 mesi fa da
aggiornato 11 mesi fa da
6 Giugno 2024 09:47
Grazie per la segnalazione. Era un errore nella descrizione, il meetup è corretto. :) .g.
domanda inviata 11 mesi fa da
2
risposte
63
vis.
domanda inviata 3 anni fa da
aggiornato 3 anni fa da
5 Maggio 2022 17:31
Buonasera Giulio, grazie per la risposta. Ho ancora dei dubbi a riguardo. Ho creato le relazioni come da lei specificato (allego immagine) ma ancora non capisco come gestire il portale e i vari campi da,a,cc,ccn. Io tramite la tabella mail cliente (che è quella da cui visualizzerò i dati del mio portale), dovrei vedere tutti (leggi di più)
domanda inviata 3 anni fa da
4
risposte
161
vis.
domanda inviata 4 anni fa da
aggiornato 4 anni fa da
Categoria: Liste valori
Categoria:
17 Giugno 2021 18:19
spettacolare come si possano trovare molteplici soluzione per la risoluzione dello stesso problema però la preparazione di Giulio è qualcosa di veramente incredibile appena avrò un pò di tempo proverò a "sperimentare" le LV virtuali, magari potrebbero rivelarsi più comode e interessanti delle "classiche" LV
domanda inviata 4 anni fa da
Categoria: Liste valori