|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 33
|
[SQL] operatori in e or
Ciao a tutti!!!
Io dovrei fare una query piuttosto lunga... (cioè con un sacco di or ), sul manuale di sql dice che con l'istrozione in si può evitare di ripetere il codice... Il problema però è che non mi restituisce lo stesso risultato!!! Sapreste dirmi la differenza tra i due operatori?? Grazie mille buona pasqua a tutti!!! |
|
|
|
|
|
#2 |
|
Junior Member
Iscritto dal: Mar 2008
Città: Bolgare(BG)
Messaggi: 23
|
gia nel thread precedente (che ti hanno chiuso) ti avevano dato 1 risposta, comunque, eccola qui:
OR: SELECT nome,cognome FROM alunni WHERE nome='Paolo' or nome='Giacomo' or nome='Sarcxxxo'; IN: SELECT nome,cognome FROM alunni WHERE nome IN ('Paolo','Giacomo','Sarcxxxo'); o anche SELECT nome,cognome FROM alunni WHERE nome IN (SELECT nome FROM people2); In pratica, con le "OR" hai dei confronti in pura algebra booleana, quindi se hai concatenato una serie di OR, basta che 1 delle condizioni venga verificata ed il record viene estratto. Con le "IN" invece.... fai la stessa cosa, MA, compatti la scrittura della query... in altre parole, controlli se il campo a Sinistra della IN ha un valore tra quelli nella lista (che puo essere anche di 1 solo elemento tra l'altro, o anche il risultato di una sub-query) di destra della IN, se c'è il record viene estratto, altrimenti no. caccia 1 urlo se non è chiaro
__________________
---Ci sono 10 categorie di persone... chi conosce il binario e chi no--- |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 33
|
Grazie mille...
Non capisco però perchè mi vengono due risultati diversi... mah??? Sbaglierò qualcosa.. Grazie ancora Ciao ciao |
|
|
|
|
|
#4 |
|
Junior Member
Iscritto dal: Mar 2008
Città: Bolgare(BG)
Messaggi: 23
|
beh, prova a postare il codice delle 2 query, cosi ti so dare 1 risposta piu precisa...
__________________
---Ci sono 10 categorie di persone... chi conosce il binario e chi no--- |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 33
|
Hai ragione, scusa
dunque quella con gli or è select * from gruppi g where g.nome='pippo' and g.id ='98' or g.id ='104' or g.id ='120' or g.id ='124' or g.id ='126' or g.id ='127' or g.id ='150' or g.id ='141' or g.id ='142' or g.id ='149' or g.id ='151' or g.id ='152' e quella con l'in è select * from gruppi g where g.nome='pippo' and g.id IN ('98','104' ,'120','124','126' ,'127' ,'150' ,'141' ,'142' ,'149' ,'151' ,'152') grazie ciaco ciao |
|
|
|
|
|
#6 | |
|
Junior Member
Iscritto dal: Mar 2008
Città: Bolgare(BG)
Messaggi: 23
|
Quote:
la prima query è sbagliata.... ecco le 2 query corrette: select * from gruppi g where g.nome='pippo' and (g.id ='98' or g.id ='104' or g.id ='120' or g.id ='124' or g.id ='126' or g.id ='127' or g.id ='150' or g.id ='141' or g.id ='142' or g.id ='149' or g.id ='151' or g.id ='152') e quella con l'in è select * from gruppi g where g.nome='pippo' and g.id IN ('98','104' ,'120','124','126' ,'127' ,'150' ,'141' ,'142','149' ,'151' ,'152');
__________________
---Ci sono 10 categorie di persone... chi conosce il binario e chi no--- |
|
|
|
|
|
|
#7 |
|
Member
Iscritto dal: Nov 2006
Messaggi: 33
|
grazie mille!!!
Mannaggia alle parentesi!!! CIAO CIAO |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:38.




















