[Risolto] Tabelle in relazione: query vuota se campo vuoto

Discussioni sulle caratteristiche di database
Rispondi
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

[Risolto] Tabelle in relazione: query vuota se campo vuoto

Messaggio da markinson »

Salve di nuovo! :)

Dalle tabelle, ai formulari, adesso sono alle query/ricerche sulla base di dati. :shock:
Sicuramente ho commesso degli errori nella progettazione, che adesso stanno venendo a galla e, in qualche modo, devo cercare di porre rimedio.

Cercherò di spiegare la questione nel modo più chiaro, anche se la vedo un po' complessa (per me).

Ho due tabelle, poste in relazione 1 a molti.
La tabella principale (1) riguarda il singolo fascicolo/procedimento; la tabella secondaria (n) considera le varie fasi del procedimento, tante nel tempo, in cui il fascicolo può trovarsi.

Nella tabella principale vi sono due campi importanti: pratica correntemente attiva e pratica da gestire (entrambi di tipo boolean). Quando sono tutti e due su "sì" la query mi deve estrarre il fascicolo, con tutte le fasi del procedimento nel tempo succedutesi (in futuro proverò ad estrarre solo l'ultima fase, quella più recente).

Questa è l'immagine della struttura della query:
AOO_Query_Stato procedimento_000.jpg
Alla fine ho risolto, però volevo condividere cosa ho combinato per arrivare alla conclusione per me temporaneamente soddisfacente, così da capire dove ho sbagliato, perché da qualche parte ho sbagliato.

Infatti, lanciata la query ottenevo come risultato soltanto i fascicoli/procedimenti per cui vi era stato un movimento nella tabella secondaria (molti) dello stato del procedimento. I fascicoli, sebbene correnti e da gestire, che non avessero avuto nella tabella secondaria in relazione (molti) alcun record non venivano estratti.

Sono dunque intervenuto, attraverso un formulario appositamente creato, sulla tabella secondaria in relazione (molti) per inserire, ad esempio, come stato del procedimento il primo valore della casella di riepilogo associata al campo, che nel caso di specie è un valore vuoto-nullo. Fatto questo e lanciata nuovamente la query ho visualizzato anche i record principali lato "1" che sul lato "molti (n)" non avevano specifici stati del procedimento (meglio: avevano come stato del procedimento il valore "vuoto").

Ho pensato allora che introducendo un valore di default "vuoto" nel campo "stato del procedimento", definito come "Testo [VARCHAR]", potesse risolvere la questione.
AOO_Query_Stato procedimento_001.jpg
Tuttavia non ho compreso effettivamente quale parametro passare: '', NULL o EMPTY?
Ho cercato di decifrare il post [Solved] Set a default Value as a Blank Space, ma mi sono perso.

Nella realtà, e concludo riassumendo, può capitare che io inserisca ogni informazione relativa al fascicolo, spunti i campi booleani "pratica correntemente attiva" e "pratica da gestire", ma nulla sia immediatamente inserito nella tabella secondaria (in relazione "molti").
Lanciata la query devo poter comunque vedere questo fascicolo/procedimento, sebbene la tabella secondaria non sia stata ancora popolata con alcun valore.

Grazie ... perché so che l'ho fatta lunga e so pure di non essermi spiegato in maniera semplice. :oops:
Ultima modifica di markinson il sabato 4 luglio 2020, 18:49, modificato 1 volta in totale.
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Tabelle in relazione: query vuota se campo vuoto

Messaggio da markinson »

Ho creato un dbase di "servizio", per cercare di spiegarmi meglio.

La funzione di questo semplicissimo dbase è quella di registrare i comuni da visitare, per particolari attrazioni che possono presentare.
Ora, cliccando sul campo booleano "Da visitare" e interrogando poi con una query la base di dati, vorrei poter ottenere sia i luoghi/comuni per cui ho specificato cosa andare a vedere (centro storico, museo, teatro, etc.) sia i luoghi/comuni per cui non ho specificato cosa visitare.

Invece, con la query come da me strutturata riesco a vedere soltanto quei luoghi per cui ho sì selezionato il campo "Da visitare", ma anche popolato cosa visitare.
Allegati
Comuni da visitare_001_QRY.odb
(14.24 KiB) Scaricato 113 volte
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Tabelle in relazione: query vuota se campo vuoto

Messaggio da Zago_87 »

Sinceramente si, non sono sicuro di aver capito perché la faccenda sembra più intricata di quello che è. Almeno a me fa comodo vedere il codice SQL e non la struttura per capire bene che cosa stai facendo di preciso.

Credo comunque di aver capito e credo il problema stia nella JOIN tra le due tabelle, ti consiglio quindi di verificare il codice e cercarti in rete la differenza tra INNER JOIN e LEFT JOIN, perché la soluzione che hai trovato, per quanto funzionale credo complichi e rallenti solo il tutto.

Facci sapere...e se invece non ho capito nulla o vuoi info più dettagliate allega un DB di esempio o almeno il codice SQL ;)
 Editato: Abbiamo postato assieme...verifico subito nel DB che hai allegato 
PS: quella sensazione che arriva dopo un po' di aver progettato male il DB la conosco bene, io ad un certo punto, prima che il DB diventasse troppo grande e complesso, l'ho rifatto da capo eliminando tutti i problemi di cui mi ero reso conto, rimettendo in dati nelle tabelle in ordine (avevo aggiunto tante colonne con il tempo e averle ordinate mi ha semplificato un po' le cose andando avanti ad esempio), sfruttando tutte le cose imparate per semplificare e migliorare. Ti consiglio di valutare la cose prima che sia "troppo tardi", per me ne è valsa la pena.
Ultima modifica di Zago_87 il sabato 4 luglio 2020, 14:55, modificato 1 volta in totale.
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
Zago_87
Messaggi: 111
Iscritto il: mercoledì 14 gennaio 2015, 23:53

Re: Tabelle in relazione: query vuota se campo vuoto

Messaggio da Zago_87 »

Anche se non ho ben capito come è strutturato questo DB, visto velocemente non mi torna molto, prova questo codice:

Codice: Seleziona tutto

SELECT "tbl_ComuniInGenerale"."Comune", "tbl_ComuniInGenerale"."Provincia", "tbl_ComuniInGenerale"."Regione",
"DaVisitare"."DaVisitare", "CosaVedere"."CosaVedere"
FROM "tbl_ComuniInGenerale"
JOIN "tbl_ComuniDaVisitare" AS "DaVisitare" ON "tbl_ComuniInGenerale"."ID" = "DaVisitare"."ID"
LEFT JOIN "tbl_CosaVedere" AS "CosaVedere" ON "tbl_ComuniInGenerale"."ID" = "CosaVedere"."ComuniDaVisitare"
Fammi sapere se ottieni quello che vuoi
LibreOffice 6.3.6
Windows 7 PRO
Avatar utente
charlie
Site Admin
Site Admin
Messaggi: 8816
Iscritto il: mercoledì 19 dicembre 2012, 10:50
Contatta:

Re: Tabelle in relazione: query vuota se campo vuoto

Messaggio da charlie »

Confermo.
Schermata 2020-07-04 alle 14.52.08.png
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Avatar utente
markinson
Messaggi: 121
Iscritto il: mercoledì 24 giugno 2020, 15:18

Re: Tabelle in relazione: query vuota se campo vuoto

Messaggio da markinson »

G-R-A-N-D-I !!! ... e G-R-A-Z-I-E !!!
Avete centrato il problema: la soluzione nel mio caso prevedeva di impostare una "Relazione destra", come avete anticipato.
:super:
OpenOffice 4.1.15 / LibreOffice 7 still - Windows 10 Pro x64
"Facesti come quei che va di notte, che porta il lume dietro e sé non giova, ma dopo sé fa le persone dotte"
Dante (Purgatorio, Canto XXII)
Rispondi