Allora supponiamo avere tabella ARTICOLI
Composta dai campi CODICE, DESCRIZIONE, PREZZO, COSTO, NOTE, BARCODE
La tabella contiene 228 record
I valori dei campi su campo COSTO e BARCODE non sono mai stati valorizzati su nessuno dei 228 record
La domanda e': come fare una query che restituisca i nomi delle colonne mai usate?
In sostanza, con i dati esempiati sopra, la query deve restituire COSTO, BARCODE
(notare l'uso di aggettivi complessi per descrivere sinteticamente il desiderata)
Senza stare ad impiccarti cercando di inventare una singola query, crea un funzione (Sub) che lo faccia, eseguendo più query.
Bisogna vedere se la vuoi fare per qualunque tabella gli passi o per una di cui conosci bene la struttura, per sapere sia il tipo dei campi, sia se hanno valori di default o Null.
No
Gli esempi sopra restituiscono una colonna 'colonne_vuote' per tante volte quanti sono i record dentro la tabella
In sostanza si vede, per ogni record, se la colonna indicata nella query sia stata usata oppure no
Non e' questo che soddisfa la richiesta inziale
La query richiesta deve restituire un solo record, con i nomi delle colonne, che in OGNI record della tabella non hanno valore (null o '') su tabella contenente piu' di un record
Forse cosi' ho spiegato meglio
No
Gli esempi sopra restituiscono una colonna 'colonne_vuote' per tante volte quanti sono i record dentro la tabella
In sostanza si vede, per ogni record, se la colonna indicata nella query sia stata usata oppure no
Non e' questo che soddisfa la richiesta inziale
La query richiesta deve restituire un solo record, con i nomi delle colonne, che in OGNI record della tabella non hanno valore (null o '') su tabella contenente piu' di un record
Forse cosi' ho spiegato meglio
Dev'essere perché nella mia prova, per pigrizia, ho inserito a mano solo un record
Se i due neuroni si raffredderanno, dopo quello per cui stavano "lavorando" (si fa per dire, sono perfino più pigri di me), guarderò di nuovo la cosa.
P.S. Che furbo: dovrebbe essere sufficiente aggiungere la clausola LIMIT 1, anche se non ho provato!
P.P.S. Eh no, perché magari ci saranno record con uno o più campi Null, il che non significa che tutto il campo sia vuoto, in tutta la tabella.
(Stranamente, ho duplicato l'unico record che avevo creato e ugualmente mi ha tirato fuori un unico risultato, non due come dicevi).
Edit: eh, proprio per quello, perché i due record sono identici; ma se hanno Null in campi diversi, riporta quel valore colonne_vuote per ognuno).
Ammazza che pigrizia
Mi spiace per la tua conoscenza approfondita delle tematiche legate allo sviluppo codice, ma questa caratteristica direi che ti fa arruolare dritto dritto nella banda scarsotti come 'expert member'
Oh, ma scrivi una bella funzione che fai prima, come detto, anziché ammattire tentando di creare una singola query!
B4X:
Dim RecTot As Int = DB.ExecQuerySingleResult("SELECT COUNT(*) FROM Articoli")
Poi, per ogni campo, esegui una query come quella sopra, con l'aggiunta della clau
Mi sono fermato, non appena letto il tuo post appena arrivato.
Sono talmente pigro e scarsotto che mi è passata la voglia di proseguire e venuta quella di dedicarmi ai c. miei
Ma quella l'ho gia' fatta
Poi mi e' venuta la curiosita' di capire se si potesse fare con un colpo solo di query sul db
Ma dopo i primi tentativi ho deciso di chiedere aiuto
Mi sono fermato, non appena letto il tuo post appena arrivato.
Sono talmente pigro e scarsotto che mi è passata la voglia di proseguire e venuta quella di dedicarmi ai c. miei
Non so che dire, chiunque puo' leggere le parole scritte
Usare l'aggettivo 'pigro' che gia' di per se non mi sembra un'offesa, associato alla ridicola banda scarsotti, associato alle faccine, mi sembra chiaramente una bonaria presa in giro con l'unico scopo di farsi una risata
Se ritieni il mio post offensivo nei tuoi confronti, sono disponibile ad eliminarlo
No
Gli esempi sopra restituiscono una colonna 'colonne_vuote' per tante volte quanti sono i record dentro la tabella
In sostanza si vede, per ogni record, se la colonna indicata nella query sia stata usata oppure no
Non e' questo che soddisfa la richiesta inziale
La query richiesta deve restituire un solo record, con i nomi delle colonne, che in OGNI record della tabella non hanno valore (null o '') su tabella contenente piu' di un record
Forse cosi' ho spiegato meglio
Allora facciamo un esempio hai la seguente tabella:
Dove la colonna campo1 e campo2 in alcuni casi hanno valori NULL mentre il campo3 NO.
Vogliamo riportare il risultato su una singola riga di quali colonne hanno eventuali valori NULL
Utilizzando la seguente query:
SQL:
SELECT GROUP_CONCAT(colonne_vuote) as risultato
FROM (
SELECT 'campo1' as colonne_vuote
FROM test1
WHERE campo1 = '' or campo1 isnull
GROUP BY campo1
UNION
SELECT 'campo2' as colonne_vuote
FROM test1
WHERE campo2 = '' or campo2 isnull
GROUP BY campo2
UNION
SELECT 'campo3' as colonne_vuote
FROM test1 as xx
WHERE campo3 = '' or campo3 isnull
GROUP BY campo3
) as t
Dove la colonna campo1 e campo2 in alcuni casi hanno valori NULL mentre il campo3 NO.
Vogliamo riportare il risultato su una singola riga di quali colonne hanno eventuali valori NULL
Vogliamo riportare il risultato su una singola riga di quali colonne hanno TUTTI eventuali valori NULL (oppure '')
Insomma per una certa tabella vorrei capire quali campi non sono mai stati usati
Dove la colonna campo1 e campo2 in alcuni casi hanno valori NULL mentre il campo3 NO.
Vogliamo riportare il risultato su una singola riga di quali colonne hanno eventuali valori NULL
credo che il risultato/soluzione di @MarcoRome non è quello richiesto da @amorosik
lui vuole le colonne MAI usate, quindi devono avere un valore NULL su TUTTI i records