sql where
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
sql where
buonasera, ho il seguente problema: in un grafico composto da due tabelle relazionate una a molti ho la necessità che vengono visualizzate le posizioni della tabella anagrafica scadute quindi con data scadenza minore ad oggi e che sono ancora in lavorazione quindi nella tabella scarico il campo esito deve essere vuoto oppure parziale ho scritto la seguente condizione
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
(scarico.ESITO IS NULL) OR
(scarico.ESITO = 'Parziale')
ma funziona solo in parte cioè mi fa vedere nel grafico non tiene conto delle posizioni dove il campo esito è vuoto e fino a qui tutto ok ma mi conteggia tutte le posizioni anche quelle con data scadenza successiva ad oggi dove nel campo esito è indicato Parziale
dove sbaglio ?
grazie
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
(scarico.ESITO IS NULL) OR
(scarico.ESITO = 'Parziale')
ma funziona solo in parte cioè mi fa vedere nel grafico non tiene conto delle posizioni dove il campo esito è vuoto e fino a qui tutto ok ma mi conteggia tutte le posizioni anche quelle con data scadenza successiva ad oggi dove nel campo esito è indicato Parziale
dove sbaglio ?
grazie
Re: sql where
la or per come è scritta apre una nuova condizione, usa le parentesi per fare in modo che nul e parziale siano la stecca ocsa , oppure dopo la or metti un altro filto prorendendo la prima parte .
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
(scarico.ESITO IS NULL) OR (anagrafica.Scadenza<= Date("Y-M-D-")) and
(scarico.ESITO = 'Parziale')
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
(scarico.ESITO IS NULL) OR (anagrafica.Scadenza<= Date("Y-M-D-")) and
(scarico.ESITO = 'Parziale')
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Re: sql where
grazie per la risposta, ho provato anch'io ma così mi restituisce la tabella vuota anche se ci sono posizioni con l'esito parziale scadute credo, come mia hai indicato tu sia un problema di parentesi ma non riesco a trovare la soluzione
Re: sql where
allora tu hai due condizioni di test. A or B
devi delimitare A e B come ? racchiudendole . (A) or (B)
quesot esmepio credo ti sarà chiaro , scusa ma ho preso il primo magari altri lo sono di piu ma il tempo ...
no link please:.techonthenet.com/mysql/and_or.php.
devi delimitare A e B come ? racchiudendole . (A) or (B)
quesot esmepio credo ti sarà chiaro , scusa ma ho preso il primo magari altri lo sono di piu ma il tempo ...
no link please:.techonthenet.com/mysql/and_or.php.
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Re: sql where
manca una coppia di parentesiGiampiero ha scritto:buonasera, ho il seguente problema: in un grafico composto da due tabelle relazionate una a molti ho la necessità che vengono visualizzate le posizioni della tabella anagrafica scadute quindi con data scadenza minore ad oggi e che sono ancora in lavorazione quindi nella tabella scarico il campo esito deve essere vuoto oppure parziale ho scritto la seguente condizione
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
(scarico.ESITO IS NULL) OR
(scarico.ESITO = 'Parziale')
prova in questo modo :
WHERE
(anagrafica.Scadenza<= Date("Y-M-D-")) AND
((scarico.ESITO IS NULL) OR
(scarico.ESITO = 'Parziale'))
Saluti
Gianpaolo
Re: sql where
Rino scusami ma devi avere pazienza, credo che il problema sia sul riferimento DATE("Y-M-D") in quanto ho cambiato campo è funziona per semplicità posto di nuovo le modifiche apportate ma mi restituisce la tabella vuota
WHERE
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO IS NULL))
cambiando i campi e mantenendo la stessa struttura funziona!!
WHERE
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO IS NULL))
WHERE
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO IS NULL))
cambiando i campi e mantenendo la stessa struttura funziona!!
WHERE
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO IS NULL))
Re: sql where
preferisco hce si capiscnao le soluzioni piuttosto che applicarle senza capirle.Giampiero ha scritto:Rino scusami ma devi avere pazienza, credo che il problema sia sul riferimento DATE("Y-M-D") in quanto ho cambiato campo è funziona per semplicità posto di nuovo le modifiche apportate ma mi restituisce la tabella vuota
WHERE
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.scadenza < DATE("Y-M-D")) AND
(scarico.ESITO IS NULL))
cambiando i campi e mantenendo la stessa struttura funziona!!
WHERE
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO = "Parziale")) OR
((anagrafica.nominativo = "rossi mario") AND
(scarico.ESITO IS NULL))
ecco un link per la gestione delle date in mysql
https://dev.mysql.com/doc/refman/5.5/en ... ction_date
troverai le istruzioni per fare in modo che i raffronti siano tra variaibli omogenee
Sulle date accade di tutto.
Intanto hai superato il primo problema con l'uso delle parentesi (era un problema di logica) , adesso la strada è solo in discesa (è un problema di tipologia dati) .
se hai problemi scrivi e se risolvi pure
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Re: sql where
Buongiorno, non mi è chiaro ancora qualche passaggio ho provato con il date_format mi fa vedere anche quelle con scadenza futura
WHERE
((DATE_FORMAT(anagrafica.scadenza, '%d/%m/%Y') < DATE_FORMAT(CURDATE(), '%d/%m/%Y')) AND (scarico.ESITO = "Parziale")) OR ((DATE_FORMAT(anagrafica.scadenza, '%d/%m/%Y') < DATE_FORMAT(CURDATE(), '%d/%m/%Y')) AND (scarico.ESITO IS NULL))
WHERE
((DATE_FORMAT(anagrafica.scadenza, '%d/%m/%Y') < DATE_FORMAT(CURDATE(), '%d/%m/%Y')) AND (scarico.ESITO = "Parziale")) OR ((DATE_FORMAT(anagrafica.scadenza, '%d/%m/%Y') < DATE_FORMAT(CURDATE(), '%d/%m/%Y')) AND (scarico.ESITO IS NULL))
RISOLTO: sql where
avevo più volte provato ma non funzionava l'altro ieri ha filtrato i dati in modo corretto che sia dovuto a un bug
WHERE
(anagrafica.scadenza< CURDATE()) AND
(scarico.ESITO = "Parziale") OR
((anagrafica.scadenza < CURDATE()) AND (scarico.ESITO IS NULL))
WHERE
(anagrafica.scadenza< CURDATE()) AND
(scarico.ESITO = "Parziale") OR
((anagrafica.scadenza < CURDATE()) AND (scarico.ESITO IS NULL))
Re: RISOLTO: sql where
non credo a bug che sparisocno se non si aggiorna la versione.Giampiero ha scritto:avevo più volte provato ma non funzionava l'altro ieri ha filtrato i dati in modo corretto che sia dovuto a un bug
WHERE
(anagrafica.scadenza< CURDATE()) AND
(scarico.ESITO = "Parziale") OR
((anagrafica.scadenza < CURDATE()) AND (scarico.ESITO IS NULL))
comunque mi pare che hai un errore logico sulla qry
la opzione OR opera su "esito" in modo errato.
anagrafica.scadenza< CURDATE() AND
((scarico.ESITO = "Parziale") OR (scarico.ESITO IS NULL))
dovrebbe essere più corretta .
Non hai un ambiente per testare e generare le qry? usa https://www.mysql.it/products/workbench/
oppure https://www.devart.com/dbforge/mysql/studio/ ( questo a pagamento ma potentissimo)
L'ambiente SC non lo uso trovando quei due prodotti molto piu specialistici, puoi testare un sacco di cose sul db spingerti molto lontano veros lidi inimmaginabili ( lo so sembra ma in realtà non fumo da oltre 25 anni)
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase
Chi c’è in linea
Visitano il forum: Ahrefs [Bot], Semrush [Bot] e 7 ospiti