Ciao a tutti, di recente mi sono imbattuto nel comando ANY nella clausola WHERE, potreste spiegarmi in modo efficente come funziona e cosa effettivamente fa? magari cin qualche esempio
Ciao a tutti, di recente mi sono imbattuto nel comando ANY nella clausola WHERE, potreste spiegarmi in modo efficente come funziona e cosa effettivamente fa? magari cin qualche esempio
ANY non e' un comando ma un operatore
ANY si comporta come IN, cioe' di fatto un OR, pero' con la possibilita' di usare dei comparatori
qui hai una descrizione dettagliata:
http://www.html.it/pag/32153/le-subquery/
OT @ mi ricorda una vecchia richiesta all'assistenza sul tasto ANY.... press ANY key to continue
La domanda era: qual'e' il tasto ANY????
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
ho bisogno di aiuto per l operatore exists ho il seguente esercizio
select distinct Vnum
from clienti esterna
where exists
(select * from clienti interna
where interna.vnum=esterna.vnum
and interna.cnum<>esterna.cnum
);
da quello che ho capito viene selezionata la prima riga Vnum della tabella clienti esterna e poi
viene eseguita la sottoquery dove viene fatta l uguaglianza tra interna.vnum=esterna.vnum
dove si verifica sei i valori sono = poi viene verificati se ci sono valori diversi tra interna.cnum<>esterna.cnum
pero non riesco a caprire confrontando interna.cnum con esterna.cnum come trovo la diversita se sono valori = di una stesssa tabella![]()
![]()
in realta' nella tua query non si capisce quali siano i nomi delle tabelle messe giu' senza separatori virgole o punto....
di fatto viene prima eseguito la risoluzione dei nomi tabella, poi il where e dal risultato ottenuto dal filtro applicato con il where si selezionano i campi richiesti.
Tieni presente che exists rende solo false o true.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
a me pare sia sempre la stessa tabella "clienti" un volta con alias "esterna" e l'altra con alias "interna"Originariamente inviato da piero.mac
in realta' nella tua query non si capisce quali siano i nomi delle tabelle messe giu' senza separatori virgole o punto....
potrebbe, ma perderebbe ogni senso questo:Originariamente inviato da optime
a me pare sia sempre la stessa tabella "clienti" un volta con alias "esterna" e l'altra con alias "interna"
where interna.vnum=esterna.vnum
and interna.cnum<>esterna.cnum
vnum = a se stesso AND cnum diverso da se stesso.....![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
non conoscendo la struttura della tabella clienti e non sapendo manco a cosa serva la query non possiamo supporre niente![]()
Appunto, era questo il senso della mia risposta precedente, non si capisce nulla.Originariamente inviato da optime
non conoscendo la struttura della tabella clienti e non sapendo manco a cosa serva la query non possiamo supporre niente![]()
L'unica cosa che si capisce e' che si tratta di un esercizio.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
la tabella e quella dei clienti
Cnum Cnome citta Vnum
c01 rossi bergamo v01
c02 bianchi roma v03
c03 verdi palermo v02
c04 gialli genova v02
c06 baroni roma v01
c07 palma milano v04
co8 virdis chieti v07
dovrei avere come risultato vo1,vo2 da
select distinct Vnum
from clienti esterna
where exists
(select * from clienti interna
where interna.vnum=esterna.vnum
and interna.cnum<>esterna.cnum
);
vuoi cioè estrarre quei vnum che si ripetono più di una volta (esporre la propria esigenza in italiano semplice aiuta). lo fai con COUNT(), GROUP BY e HAVING, senza scomodare subquery che ammazzerebbero il server nel caso di tabelle consistenti
![]()