Newsgroup: it.politica
Titolo: [OT] una domanda sulle queries. Ci provo, non uccidetemi :-)

O perlomeno se proprio dovete menare (ci sta) menate piano.



Semplifico all' osso : 

avete una tabella T con i campi cognome e sesso (M/F).



L' utente (che per ipotesi non e' in grado di scrivere queries)

agisce tramite una maschera che ha due campi : cognome e sesso.



1)

L' utente vuol ricercare tutti coloro che di cognome facciano

"Rossi" a prescindere dal sesso.

In quel caso scrive Rossi nel campo cognome e lascia l' altro

campo vuoto. 



2)

l' utente vuol ricercare tutti quelli di sesso = 'M' a prescindere

dal cognome.

In quel caso scrive M nel campo sesso e lascia l' altro campo 

vuoto.



Nel primo caso scrivereste (un po' "meta", s' intende) : 

select cognome, sesso from T where cognome = campo_cognome 



Nel secondo scrivereste :

select cognome, sesso from T where sesso = campo_sesso



Dove campo_sesso e campo_cognome sono due variabili che prendono 

il valore immesso dall' utente.



Ovvio.



Forse meno ovvio :

io vorrei scrivere una query UNICA che risolva ambedue le 

tipologie di richieste in questo modo : 



select cognome, sesso from T where 

(sesso operatore campo_sesso) and 

(cognome operatore campo_cognome)



dove :  

"operatore" e' un particolare operatore (appunto) che fa si che

se ad es. campo_cognome non riporta valori rende la condizione

(cognome operatore campo_cognome) comunque vera. Lo stesso per

l' altra condizione. 

Per es. "=" e' un operatore ma non e' adatto allo scopo.



In questo modo con una sola query preordinata risolvo tutte le

possibilita'. 



Esiste un siffatto "operatore" ? Probabilmente no ma non si sa

mai. Magari c'e'. 



Aspettate : 

considerate che il campo puo' essere anche LOGICO, o DATA, o

qualsivoglia e puo' assumere valore NULL. Anzi  lo assumera'

tutte le volte in cui ad es. il campo e' logico e  l' utente

evita di fare una scelta. 



Mi pare un problemuccio non banalissimo ma magari sbaglio.



Grazie sincere a chiunque sia in grado di darmi una risposta

seria.






"Massimiliano Catanese"  ha scritto nel messaggio 

news:0aac0a04-27c4-445d...@googlegroups.com...



O perlomeno se proprio dovete menare (ci sta) menate piano.



che  centra con la politica? 




 mai. Magari c'e'.



La cosa piï¿½ semplice ï¿½ la UNION

Se il tuo db la supporta ...



select cognome, sesso from T where cognome = campo_cognome

UNION

select cognome, sesso from T where sesso = campo_sesso



Esistono anche modi piï¿½ fighi ... ma questo funziona e dovrebbe anche 

eliminarti (dipende anche questo dal tipo di db usato) eventuali doppioni



spero d'esserti stato utile e d'aver capito quello che chiedevi



ciao!









-- 

Gli Stati Uniti rinviano lï¿½offensiva al 15 settembre. Aspettano la 

riapertura delle scuole.

(
www.spinoza.it
)

Un blog serissimo ...




c'� il newsgroup

microsoft.pubblic.it.access 





Niente, e' OT. Non ne faccio quasi mai, concedetemelo ogni 

morte di Papa.






"Massimiliano Catanese"  ha scritto nel messaggio 

news:14688355-9202-4d14...@googlegroups.com...


io non ti devo concedere nulla sei libero di fare il cazzo che ti pare 




 spero d'esserti stato utile e d'aver capito quello che chiedevi



Assolutamente SI. Un grazie sincero.






Il 16/09/2013 14:33, Massimiliano Catanese ha scritto:


Certo che anche tu sei buffo eh ... chiedere una concessione a pugnetta!



Mboooo sei strano forte ... Max ... senza cattiveria eh!





Certo ... puoi mettere tutti i join che vuoi.

Unico limite per le query d'unione (UNION) ï¿½ che tutte chiaramente 

devono avere gli stessi campi. Altrimenti otterrai un errore.



I modi furbi ... sono quelli di costruire la sintassi sql in una stringa 

e poi in base a quello che chiede l'utente di modificare la stessa prima 

di eseguirla.



Una sorte di query on demand costruite e poi eseguite.

Ma onestamente non mi sembra proprio che sia la tua esigenza.



Inutile complicarsi la vita...



 Mboooo sei strano forte ... Max ... senza cattiveria eh!



E perche' ? Non e' un cristo come un altro scusa ? 


Il 16/09/2013 14:58, Massimiliano Catanese ha scritto:


Sei proprio un "pezzo di pane"!

:-D



 di eseguirla.





E come la vedi una soluzione di questo genere, guarda un po, mi PARE 

si avvicini alla tua : 



Sia Q una variabile stringa.

Allora : 



Q = "select (...) from (...) where " & funzione_mia("sesso",campo_sesso)

& ";"



Questa funzione restituisce la stringa "(sesso = 'M')" se l' utente 

inputa qualcosa oppure restituisce "(1=1)" (per esempio). 

A quel punto eseguo la routine per qui nella Q ci sara' la stringa

query corretta e al sistema gli sparo in faccia quella. 



Puo' andare ? 






 microsoft.pubblic.it.access



quoto



-- 




A me onestamente le funzioni piacciono pochissimo soprattutto se usate 

nel Where!



Rallentano tantissimo il tutto.

Io ai ragazzi che coordino per lo sviluppo dei db le ho espressamente 

vietate.

Un conto ï¿½ usare funzioni per la visualizzazione dei record ... un conto 

ï¿½ usarle nelle where.



Succede infatti che spesso ... proprio a causa della funzione il sistema 

faccia un intero table scan e se hai molti record aspetti un botto.



A che pro? Non c'e nessun vantaggio

Ergo la query costruiscitela magari ... ma senza funzioni ... valutando 

i casi possibili che l'utente ti puo' dare



Ottimo l'uso di When ... molto bello.



Ma funziona che io sappia non con Access ma con Sql Server.





http://www.techrepublic.com/article/in-t-sql-use-casewhen-in-place-of-ifthen/




 faccia un intero table scan e se hai molti record aspetti un botto.



quella funzione serve per costruire il codice SQL, cocomero.


 select cognome, sesso from T where sesso = campo_sesso



Con costo di una select per ogni campo da filtrare...geniale.


 vietate.



Addirittura coordini ? Bravo, davvero. Mi fa piacere. 



Hai ragione avevo letto male!



Grazie per la segnalazione! Gentile come sempre.



FANGUL



-- 

Gli Stati Uniti rinviano l’offensiva al 15 settembre. Aspettano la 



 I modi furbi ... sono quelli di costruire la sintassi sql in una stringa 



Il problema è che ti esprimi come il tipico peracottaro del settore.






Quanto sei spocchioso e noioso ...



select distinct cognome, sesso from T where (cognome = campo_cognome or 

sesso = campo_sesso)





Devi essere proprio un essere parecchio triste.




Vabbe' son tabelle di qualche migliaio di record, non impatta 

un granche' dai ...



Pero' giustamente si, in generale hai ragione.






E' probabile ... ma meglio peracottaro che pezzo di merda




Ma Santa Madonna ma si puo' sapere perche' cerchi sempre la lite ? 






La risposta ï¿½ semplice: i figli di puttana con complessi di superioritï¿½ 

lo fanno.



E lo fanno dietro ad un monitor... in quanto sono dei vermi.

Il signorino in questione fa parte della banda che citava Pegasus.

Ricordo un thread sul c che aveva scassato la minchia a morte per 15 giorni.

Una cosa da psicopatico sotto neurolettici.



Lassï¿½ sta... meno male che esistono ste merde. Ti fanno sentire meglio 

anche nei giorni peggiori.



 sesso = campo_sesso)



Non ci siamo: ti tira fuori i rossi femmina anche se tu avevi chiesto maschi.




Il 16/09/2013 15:36, Cicap ha scritto:


Li cancelli dopo

:-D



 lo fanno.



IMHO : semmai di inferiorita'.



Non litigate, non ha *senso* santo Dio. Proprio non ha senso ! 

Questo NG e' un crogiuolo di COMPETENZE, anche al netto dei folli.

(che pero' prendono forza dal contesto, altrimenti lentamente 

scomparirebbero).



Potremmo costruire opinioni che verrebbero poste all' attenzione 

dei  media, se lo usassimo per lungo tempo come Cristo comanda.



Io non capisco allora perche' diavolo dobbiamo ridurlo a una fogna 

senza ragione alcuna. Cosi', "a gratis".




 :-D



Facciamo select * from T allora...






 Non ci siamo: ti tira fuori i rossi femmina anche se tu avevi chiesto maschi.



AHAHAHAHAHAHAH!!



E lo smerdi così, con così tanta nonchalance? :)



eccone un altro ... :-( 



Che poi e' avvocato, quindi cazzo ne sa di queries lo sa solo 

il Padreterno. 



Ma roba da pazzi, DA PAZZI veramente.






Ma chi ti paga lo stipendio lo sa che le tue conoscenze professionali

sono ad un livello tale che ti tocca chiedere su un ng di politica? 

Fossi in lui ti manderei in tempo zero a pulire i cessi.





am




 O ...



puoi anche usare 2 strade differenti dalla union:



1) Nella gestione della query controlli i campi imputati e poi costruisci dinamicamente la query

per esempio: 



Querystring = "select cognome, sesso from T" 

if campo_cognome > "" 

{

   Querystring += "where cognome = campo_cognome"

   if campo_sesso > "" 

   {   

      Querystring += "and  sesso = campo_sesso" 

   }

}

elseif campo_sesso > "" 

{

   Querystring += "Where  sesso = campo_sesso" 

}



2) fai una query statica così:

select cognome, sesso from T 

where cognome > campo_cognome_min 

and cognome < campo_cognome_max

and  sesso > campo_sesso_min

and  sesso < campo_sesso_max



nella gestione della query imposti di default cognome_min = "aaa" e il max "zzz" 

e poi se i campi della maschera sono pieni vai a sovrascriverli










Se postavi su it.comp.software.database sarebbe stato meglio e avresti 

persino evitato gli insulti

Comunque passiamo al problema

Supponendo che una scelta è fatta se il campo che riempie l' utente non 

è una stringa a lunghezza 0 e va filtrata allora una query di questo 

tipo fa al caso tuo





select * from T

where (length(?) = 0 or cognome=?) and (length(?)=0 or sesso=?)





Al posto dei primi due ? fai il bind con il valore utente del cognome e 

a al posto dei secondi due fai il bind con il valore utente del sesso














 E' probabile ... ma meglio peracottaro che pezzo di merda



Ti assicuro che fanno più danni i peracottari.



Quale lite? "costruire la sintassi sql" non ha alcun significato nella lingua italiana. Anzi una la possiamo trovare: costruire le regole della sintassi di un linguaggio che esiste già (SQL)...ma dubito che il folle intendesse questo.


 un granche' dai ...



E' quello che dicono i peracottari due mesi prima di aver rilasciato un software che semplicemente non funzionerà mai. 



Mi domando, tra l'altro, con quale ingiustificata spocchia tempo fa pensavi di insegnare a persone come Marco Minardi riguardo ai database relazionali.






"Massimiliano Catanese"  ha





HO LAVORATO L'ANNO SCORSO COL DATABASE HO RISOLTO IL QUESTITO USANDO 

L'ISTRUZIONE JOIN COSI TI UNISCI LE 2 DOMANDE IN UNA SOLA E CREI UNA TABELLA 

MULTIDIMENSIONALE 








"A. Muddica"  ha scritto nel messaggio news:l172th$bt2$1...@dont-email.me...


***



NON C'AZZECCA NULLA. PURE IO NON SAPEVO NULLA DI DATABASE IN QUANTO HO 

SEMPRE E SOLO PROGRAMMATO IN LINGUAGGIO MACCHINA POI PERO HO DOVUTO FARE UN 

SITO A UN AMICO E VOLEVA UN DATABASE PER I CLIENTI E IN 5 MINUTI HO CERCATO 

SU INTERNET LE ISTRUZIONI PER USARE IL PHP E IL MYSQL E HO FATTO SUBITO 








"A. Muddica"  ha scritto nel messaggio news:l172th$bt2$1...@dont-email.me...




***



TU INVECE CHE HAI FREQUENTATO LA "SKUOLA" COMUNISTA E HAI PRESO IL DIPLOMA 

ORA TI CREDI CHE SEI BRAVO??? SECONDO ME NON SAI FARE UN CAZZO 






Certo ... puoi mettere tutti i join che vuoi.

Unico limite per le query d'unione (UNION) ï¿½ che tutte chiaramente

devono avere gli stessi campi. Altrimenti otterrai un errore.



***



IN REALTA ANCHE SE COSI FUNZIONA OTTIENI GLI ERRORI DEGLI STANDARD E TI 

METTE UN SACCO DI WARNING VEDI TU OPOI PERO NON LAMENTARTI CHE SEI 

INCOMPATIBILE CON QUELLI CHE NON HANNO WINDOWS 




 un granche' dai ...



E' quello che dicono i peracottari due mesi prima di aver rilasciato un 

software che semplicemente non funzioner� mai.



Mi domando, tra l'altro, con quale ingiustificata spocchia tempo fa pensavi 

di insegnare a persone come Marco Minardi riguardo ai database relazionali.



+++



UNO COME TE (CHE E DI SINISTRA COMUNISTA) PUO ESSERE SOLO UN COJONE CHE SA 

LO SCHEMA A MEMORIA. SE IO TI INVENTO UNA NUOVA VERSIONE TU VAI IN TILT. SEI 

STUPIDO E INUTILE, COME TUTTI QUELLI DI SINISTRA. CIAO 






facciamolo ...prof bimbominchia


 Addirittura coordini ? Bravo, davvero. Mi fa piacere.



ROTFL, al massimo può coordinare il panettiere con il macellaio quando ti fanno un panino.


 Mi domando, tra l'altro, con quale ingiustificata spocchia tempo fa pensavi di insegnare a persone come Marco Minardi riguardo ai database relazionali.





Sti cazzi che assurda pretesa!

Insegnare qualcosa a Marco Minardi... sui database relazionali... poi!



E' equivalente ad insegnare a Steve Jobs come indossare una "dolcevita"!



O come insegnare ad uno che vota PD ad essere fedele a gente come 

Massimo D'Alema!



Massimiliano ... un se fa cazzo!



Cichiappe appartiene all'elite che crea software che poi usa la Nasa, 

l'Esa, il PD... mica pizza e fichi!



Cichiappe è un uomo arrivato a 32 anni!



Non è mica un superfallito come me!



Vabbè .... il mio amore è arrivato!



Stasera mi sento in forma!



Buonanotte a tutti i geni dei db relazionali...

e ai semplici che non hanno l'esigenza di sentirsi importanti per 

offendere gli altri.










 Insegnare qualcosa a Marco Minardi... sui database relazionali... poi!



Nella fattispecie non ha insegnato nulla a nessuno, anche perchè ha sparato una montagna di stronzate. Un pò come stai facendo tu adesso.








Non si capisce un cazzo. Se invece vuoi, *tutti* i maschi e tutti quelli 

con cognome= cognome, devi usare la condizione OR. Se congmome =blank e 

sesso=M, ti tira fuori tutti i masculi; se cognome = rossi et sesso =M, 

ti tira fuori tutti i rossi (compresi i trans, se li hai codificati con 

T) e tutti i maschi che non si chiamano Rossi...

Se vuoi qualcosa che si voglia inculare George Boole, non � che non 

l'hanno ancora inventata, non esiste.

Al limite puoi chiedere al tuo alter ego :-)







Join ti unisce due tabelle collegate per uno o pi� campi comuni, sa ved 

che te se un terun :-)




Infatti, magari sbaglio pure io ma mi pare che questo sia il classico 

esempio di pippe mentali, mentre basta una banale query

come questa :



select * from T where cognome = campo_cognome or sesso = campo_sesso



Naturalmente devi controllare prima quello che ti digita l'utente e 

chiamare la query sono con uno dei due campi valorizzato e l'altro no.





	Saluti


E perche' ? Non e' un cristo come un altro scusa ? 



  Ma quale Cristo, quello e' una bestemmia vivente!!! 






Costruire una query dinamica è facile ma non è quello che voleva 

Massimiliano










Infatti  quella non e' una query dinamica.



	Saluti


 Massimiliano



Se con query dinamica intendi costruire dinamicamente la stringa SQL, allora dovresti esserti accordo di due cose:



1. è in genera la soluzione migliore, più semplice e sicura da implementare



2. il sekkio non è certo in grado di fare valutazioni di mantenibilità del codice, e con ogni proababilità i requisiti che ha posto sono il frutto della sua inesperienza.



Uno sveglio come te dovrebbe capirle queste cose, e consigliarlo di conseguenza.




Ma come te lo spieghi che sbagli sempre?



	Saluti




 a al posto dei secondi due fai il bind con il valore utente del sesso



Ma se l' utente non sceglie il campo questo potrebbe assumere il valore

NULL, ed in quel caso la funzione lenght darebbe errore. Giusto ? O 

sbaglio ?



Come gestire poi i campi logici, data e numerici ? 




Radica', famme capi' 'na cosa: ma tu vuoi lanciare una query senza fare 

prima nessun controllo su quello che ti digita l'utente?

Quindi se quello, per esempio, sul campo sesso ti ci mette una "Z" tu te 

la bevi cosi' e non gli dici niente?

Dai retta a me, fai le cose in maniera cristiana: fai una banalissima 

routine di controllo sull'input e poi lancia una altrettanto banale 

query con i due campi in OR.

Perche' volete complicare per forza un problema cosi' semplice?





	Saluti


 quello che ti digita l'utente?



Nonno' il controllo lo faccio eccome, ma non basta a risolvere il 

problema. 



Supponi che l' utente IGNORI un campo logico. Puo' farlo. Allora il 

valore di quel campo logico sara' NULL, come deve (ossia ne vero ne 

falso, ossia IGNOTO, quello e' il significato). 



In quel caso che t' inventi ? (intendo : in relazione alla mia 

esigenza di risolvere il utto con una UNICA query). Te la prendi

in der secchio. 



Ecco perche' ecc ecc ... Capito ? 




Si', ho capito che non hai la minima idea di cosa stai parlando.

Levami una curiosita': cosa intendi quando dici "controllo lo faccio 

eccome"?

A casa mia il controllo serve perche' se l'utente ti digita qualche cosa 

di sbagliato gli mandi indietro un bel messaggino di errore e lo inviti 

a correggere, e questo fino a quando non fa le cose per benino come te 

le aspetti tu, solo allora lanci la query.

Come al solito, ti piace farti le pippe mentali e non vedi le cose semplici.



	Saluti


 eccome"?



Intendo quello che si deve intendere : e cioe' quello che dici tu nel

seguito. 



Dopodiche' nonostante t' abbia ben spiegato il perche' e il percome

cio' non risolve il problema tu insisti e persisti sulla stessa linea.



A questo punto e' un problema tuo, I' m sorry.




Andiamo bene!!!!!!!!!



Radica' ... che brutta cosa l'ignoranza!!!!!!!!!



	Saluti


 del codice,



Ma lol. Dici ? Tu hai dei seri problemi. E' ovvio.



En passant : "sekkio di merda" chiamaci quel cornuto di tuo padre, nel 

caso fortuito  che tu ne conosca l' identita', orribile pezzo di merda

che non sei altro, nonche' stupido come una patata bollita.



Hai capito ? Hai francamente rotto i coglioni col tuo modo di fare.



Saluti.




 wrote:


E' un flag di controllo che disabilita il resto se non ha un valore

valido. Vuoi lasciare NULL il valore? Bravo, la query non va avanti.



Altrimenti, chiami il numero verde e cerchi di parlare con

l'operatore.







Giovanni



-- 

"Citatemi dicendo che sono stato citato male"

Groucho Marx



Dovrei risponderti ? Ok.



E' evidente che sei un programmatore da 4 soldi. Il quale non

appena ha di fronte un problema non standard non capisce piu' 

che pesci pigliare. 














E' similare, occorre sempre decidere quali valori fare assumere in caso 

di non scelta,NULL potrebbe andare bene



Chiaramente attenzione alle conversioni, l' input utente normalmente è 

una stringa e va convertita nel tipo corretto






 valido. Vuoi lasciare NULL il valore? Bravo, la query non va avanti.



Ecco un altro genio dell' informatica.


 e poi se i campi della maschera sono pieni vai a sovrascriverli





Che se l' utente completa i due campi si vuole fare un and non un or





Le tue soluzioni sono troppo complesse per  un problema cosi semplice

Perchè complicarsi la vita inutilmente ?














La soluzione che ho dato credo che sia la più semplice possibile, poi 

sta a lui




 una stringa e va convertita nel tipo corretto



Non va bene, non e' abbastanza generale ed elegante.

Preferisco questa soluzione, che dicevo a Geppo : 



Q = "select (...) where " 

& mia_funzione(parametro, valore_immesso_da_Utente, nome_campo)



La mia_funzione (unica, perche' tiene conto di quale campo e' interessato) restituisce una stringa del tipo :

"(sesso = 'M')" oppure "(1=1)" a seconda che l' utente faccia una scelta

o lasci il campo vuoto. 



In questo modo (in funzione del "parametro") la funzione e' unica e

si adatta anche ad altre queries di altre maschere del tutto diverse. 



Per cui basta modificare *quella* funzione e ogni cambiamento sara' 

facilmente implementabile.



Comunque grazie : e' stato didattico.


 Quando non serve non vedo perchè usare questo metodo



Mi scoccia (tra l' altro) gestire l' input utente a piu' livelli.

Con il metodo che ho inventato invece tutto viene gestito in un 

UNICO punto del codice, ossia in "mia_funzione". La quale potrei

anche pensarla com un punto di entrata che a sua volta chiama una

funzione diversa per ogni relazione maschera - query. Il che 

renderebbe il codice ancora piu' breve e semplice da modificare.



Ti piace ? 


On Tue, 17 Sep 2013 05:45:44 -0700 (PDT), 
radica...@gmail.com


wrote:


Beh, in confronto a te anche Cindy (la mia gatta) e' un genio

dell'informatica.



 Giovanni



Scusa se m'intrometto, ma volevo farti una domanda.

Vedo dai tuoi reply a radicale (non leggo direttamente lui perche' l'ho 

plonkato) che fra  voi due c'e' una qualche forma di attrito (diciamo 

cosi').



Ma se non ricordo male vi eravate anche incontrati nel RW e una volta 

dialogavate abbastanza tranquillamente.



Mi sono perso qualche passaggio?



Data la natura personale della domanda sei liberissimo di non 

rispondere, ovviamente.





-- 

"Contro la stupidit�, neanche gli dei possono lottare."

[Friedrich von Schiller - "Giovanna d'Arco", Atto III, Scena 6]






Quella è una soluzione

Se vuoi te ne offro anche una altra simile alla tua



sql='....' # una sola query statica

prep=input_bind(sql,val1,val2,...) # esegue il bind dei dati utenti e 

ritorna la prepare della query

execute(prep) # esegue l' execute

while... # loop sui dati della query





una sola query basta e avanza e rende la manutenzione del codice piu 

semplice rispetto ad una query costruita in base ai parametri utente

Quando se ne puo fare a meno, è meglio non costruire query dinamiche

Comunque sta a te decidere



Chiaramente se hai maschere differenti andiamo fuori dal dominio del 

problema che tu avevi specificato e ad questo punto è chiaro che 

occorrono query dinamiche
















Ho già risposto in altro luogo














Farti li cazzi tua no eh??








Il 17/09/2013 14:43, 
radica...@gmail.com
 ha scritto:


Radicaluccio, un problema piu' standard di questo non esiste, casomai il 

vero problema e' un altro: che ad essere fuori standard e' il tuo 

cervello!!!!



	Saluti




Cazzo ... vedo che qui siete tutti grandi esperti di informatica!!!

Io un grande esperto non sono mai stato e ora sono pure parecchio 

arrugginito, ma qui stiamo discutendo da un pezzo su un problemino 

inesistente, te ne rendi conto?



Ma almeno le hai lette le specifiche di radicale prima di parlare?

Radicale dice che i due campi contemporaneamente non sono ammessi:



 >L' utente (che per ipotesi non e' in grado di scrivere queries)

 >agisce tramite una maschera che ha due campi : cognome e sesso.

 >

 >1)

 >L' utente vuol ricercare tutti coloro che di cognome facciano

 >"Rossi" a prescindere dal sesso.

 >In quel caso scrive Rossi nel campo cognome e lascia l' altro

 >campo vuoto.

 >

 >2)

 >l' utente vuol ricercare tutti quelli di sesso = 'M' a prescindere

 >dal cognome.

 >In quel caso scrive M nel campo sesso e lascia l' altro campo

 >vuoto.



Quindi basta controllarlo prima e lanciare la query solo quando sta 

tutto a posto.



Lasciamo stare radicale, che cerca un esperto di informatica ma quello 

di cui avrebbe veramente bisogno e' un bravo esorcista, ma pure gli 

altri che gli danno spago non se ne accorgono che stiamo parlando del 

niente?



	Saluti


rispondere, ovviamente.



Io resto il solito di sempre. Lui anche.

La differenza e' che io sono (relativamente...) stabile, lui non mi

pare :-P




ma radicale ha scritto anche questo



select cognome, sesso from T where

(sesso operatore campo_sesso) and

(cognome operatore campo_cognome)





Quindi ho supposto che volesse anche fare il filtro doppio

Se non è cosi dimentichiamo pure questa discussione








Guarda che quella e' una delle possibili soluzioni di radicale,

che se esistesse il famoso "Ufficio complicazioni affari semplici" ne 

sarebbe il capo indiscusso, ma se tu vedi le specifiche ti accorgi che 

non sono altro che masturbazioni mentali e che invece la soluzione e' 

elementare ... anzi elementarissima!!!



	Saluti



Se il problema risiede nella scelta di uno a l' altro basta un semplice 

'or', non serve altro

Se non  sa lui cosa vuole fare non so che dire





Lui veramente non sa come farlo, ma cosa vuole fare lo ha scritto 

all'inizio.



	Saluti


 Quando non serve non vedo perchè usare questo metodo



Perché in generale è vero l'opposto: è molto più facile mantenere / debuggare codice Java che SQL. Alla fine può essere questione di gusti, ma spostare la complessità sul lato SQL quando questo non è assolutamente necessario non la vedo una buona pratica.


 colpi di bind ed execute senza rifare la prepare ogni volta



Le prepared statement servono primariamente per evitare le SQL injection...i vantaggi di prestazione sono nella stragrande maggioranza dei casi assolutamente trascurabili.



A basso livello viene sempre usato una prepare, una eventuale bind ed 

una execute

Poi ognuno puo decidere quale tecnica attuare sempre con quello che 

mette a disposizione il linguaggio host

Sono d'accordo che nella maggioranza dei casi non serve (avevo scritto 

tecnicismo da prestazione) ma sai quanti programmatori per di più 

pivelli per quotare una stringa usano "'"+var+"'" invece che il metodo 

corretto quote(var) ?

E' anche per questo che consiglio il bind sui valori





E' vero e non è vero in tutti e due i casi

Sta al programmatore decidere quale strada ritiene migliore per 

leggibilità e performance




 E' evidente che sei un programmatore da 4 soldi.



Un programmatore da 4 soldi è colui che considera il problema che hai posto come degno di nota.


 Quindi tu sposti tutto lato client...



Sei sicuro sicuro di saper leggere e comprendere l'italiano? 



Capisco la tua voglia di riscatto dopo le innumerevoli figure da cretino rimediate in questo thread, tuttavia neppure queste ti esimono dal leggere e riflettere prima di rispondere.


 Capisco



No bimbominkia ... tu non capisci un cazzo. Credimi.




 No bimbominkia ... tu non capisci un cazzo. Credimi.



Senti un pò, rovina dell'IT italiano, ma non eri tu che poco sopra proponevi "select * from T, tanto poi filtri dopo"? Questo a casa mia si chiama spostare il costo computazionale sul client.



Quindi di cosa cianci?






Ciancio che sei un idiota. Una persona spregevole.

Potresti anche avere una grandissima competenza, ma sei e rimani un 

figlio di puttana gasato.



Ti servono altri particolari bimbominchia maestro in query?












 Ti servono altri particolari bimbominchia maestro in query?



No è più che sufficiente così. Mi raccomando, rimani il giocattolino berluschino che sei.






Raccomandati a sta ceppa ... figlio di puttana!












 Buonanotte a tutti i geni dei db relazionali...



Non son certo un esperto dba, visto che lavoro in IT ma faccio altro, 

architettura.

Che e' anche il motivo per cui sto leggendo questo thread, interessante, 

ma non son intervenuto.



Poi se far delle considerazioni su una proposta e sottolinearne la 

fattibilita' o non fattibilita', come feci nel thread in questione, 

spiegando chiaramente i motivi dietro al mio ragionamento (senza 

minimamente entrare in considerazioni troppo tecniche sui DB, e al di 

la' delle normalissime battute da ng) e' vissuto con tutto sto dramma di 

arroganza e come se fosse un insulto mortale, amen, la prossima volta me 

ne staro' zitto.



Anche nei messaggi, mai risposti, nel thread in cui si parlava di PRNG e 

TRNG a te, io tutta sta spocchia non l'ho vista.



Mi rimane il dubbio del perche' si inveisca contro di me in una 

discussione in cui non ho aperto bocca e del perche' discutere in un 

gruppo di discussione sia vista come un'offesa mortale.



saluti

mm




 Ti servono altri particolari bimbominchia maestro in query?





Per la serie:

anche i reggiseKKio sbroKKano... :(


 Un programmatore da 4 soldi è colui che considera il problema che hai posto come degno di nota.



Io mi son letto tutto il 3d ed è evidente che non solo sono un programmatore da 4 soldi, ma pure uno che ha problemi con la lingua, e non parlo di SQL, perchè non ho capito alla fine da quella tabella con 2 campi quale combinazione di attributi si vorrebbe estrarre...



Non l'ha specificato, ma credo estrarre i maschi se specifico maschi nel campo genere, i rossi che specifico rossi nel campo cognome, i maschi di cognome rossi se specifico entrambi.


 Non l'ha specificato, ma credo estrarre i maschi se specifico maschi nel campo genere, i rossi che specifico rossi nel campo cognome, i maschi di cognome rossi se specifico entrambi.



Ma detta così "se specifico un valore in un campo" è un problema applicativo, non SQL.


 Non l'ha specificato, ...



Non per fare il Pierino, ma e' l'unica cosa chiara che ha detto.





	Saluti




      Saluti







Chissà se è stato preso il caso in cui i campi sono riempiti tutti e 

due, se è fattibile ovviamente




 Non per fare il Pierino, ma e' l'unica cosa chiara che ha detto.



Allora non l'ho capito io, poco male: qual è la combinazione di attributi da estrarre?




Le specifiche dicono che si deve riempire uno solo dei due campi quindi 

questo e' un altro caso, che comunque non vedo perche' non dovrebbe 

essere fattibile. Basta sapere se, quando l'utente riempie tutti e due i 

campi, la ricerca deve essere fatta in AND o in OR, ma direi che in OR 

ha poco senso.

Naturalmente nel caso che l'utente abbia la facolta' di digitare tutti e 

due i campi contemporaneamente oppure uno solo la select e' piu' 

complicata e non so neanche se si riesce a farla con una unica query. 

Anche ammesso che sia possibile, e' comunque piu' semplice, piu' chiaro 

e anche piu' conveniente dal punto di vista delle prestazioni fare delle 

select distinte per ogni caso: una se ha digitato solo il campo cognome, 

una se ha digitato solo il sesso un un'altra se li ha digitati tutti e due.

La query unica secondo me ha senso solamente come esercizio ... o per 

chi come radicale ama la masturbazione mentale!!!



	Saluti




Sta scritto qui sotto:



avete una tabella T con i campi cognome e sesso (M/F).



L' utente (che per ipotesi non e' in grado di scrivere queries)

agisce tramite una maschera che ha due campi : cognome e sesso.



1)

L' utente vuol ricercare tutti coloro che di cognome facciano

"Rossi" a prescindere dal sesso.

In quel caso scrive Rossi nel campo cognome e lascia l' altro

campo vuoto.



2)

l' utente vuol ricercare tutti quelli di sesso = 'M' a prescindere

dal cognome.

In quel caso scrive M nel campo sesso e lascia l' altro campo

vuoto.





	Saluti



La query unica l' avevo postata

Semplice ed elegante





select * from T

where (? is null or cognome=?) and (? is null or sesso=?)





e funziona sia con 1 campo che 2 (o n basta aggiungere altri and)






















Ma non ho capito come fai a testare dentro una select se e' null un 

campo esterno. Di che linguaggio stiamo parlando?

E comunque secondo me il null ha significato per il valore di un campo 

di una tabella, non per una variabile esterna, della quale casomai si 

puo' testare la lunghezza.



	Saluti



In tutti i linguaggi host esiste un modo di impostare un valore a null 

per una variabile esterna

Naturalmente come farlo dipende dal linguaggio host