Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-10-2012, 17:32   #1
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Query con filtro dei dati

Ciao a tutti! Ho una tabella di questo genere

ID-----Cod-----IdA----IdB
10-----123-----7------7
11-----123-----8------7
14-----123-----10-----8
15-----123-----7------8
16-----123-----7------9
17-----123-----11-----9
18-----123-----7------10
19-----123-----12-----10

Da questa tabella devo selezionare le righe che hanno in IdA i valori 7 e 8 ma che hanno anche lo stesso valore in IdB. Il valore di IdB non lo conosco a priori quindi non posso mettere una clausola WHERE IdB=7.

Facendo una query così
Codice:
SELECT * FROM tab1 WHERE IdA=7 OR IdA = 8
mi restituisce anche le righe con ID 15, 16 e 18 mentre io sono interessato solo alle righe con ID 10 e 11 ovvero alle righe che hanno entrambi i valori di IdA che ho specificato nella WHERE e hanno entrambe lo stesso valore di IdB. C'è un modo per filtrare i dati in questo modo?
Grazie!!
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 18:00   #2
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Codice:
SELECT * FROM tab1 WHERE (IdA=7 OR IdA = 8) AND IdA = IdB
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 19:53   #3
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
No, non mi sono spiegato bene. La presenza del valore 7 sia nel campo IdA che nel campo IdB era un caso.. Ad esempio devo poter selezionare anche le righe con ID 14 e 15 che hanno lo stesso IdB ma IdA diversi.
Quello che mi hai suggerito invece mi seleziona le righe che hanno IdA=IdB che non è quello che mi serve.
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 20:07   #4
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Mi spiace ma non ho ancora capito
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 20:57   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2789
E' stata dura ma credo di aver capito.
Ti servono tutti i record che hanno lo stesso idB e che soddisfano i filtri su idA.
Sul come farlo al momento non mi viene in mente niente ma lascio questo post per provare a gettar luce sull'arcano
Un dubbio però: e se ci sono per esempio 3 record con idB=3 e 4 con idB=5? (che ovviamente rispettano i filtri su idA)
Li ritorni tutti?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 21:07   #6
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Un dubbio però: e se ci sono per esempio 3 record con idB=3 e 4 con idB=5? (che ovviamente rispettano i filtri su idA)
Li ritorni tutti?
Si, basta che hanno lo stesso IdB e soddisfano i filtri su IdA.
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 21:15   #7
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Ma su IdB io non ho capito. Vuoi tutte le righe che hanno un valore che compare più di una volta?
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 21:18   #8
voyager18
Member
 
Iscritto dal: Aug 2007
Messaggi: 138
Si, mi servono le righe che hanno lo stesso valore su IdB (che sono più di una) e che soddisfano i filtri su IdA.
voyager18 è offline   Rispondi citando il messaggio o parte di esso
Old 26-10-2012, 21:39   #9
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Codice:
SELECT * FROM tab1 WHERE (IdA=7 OR IdA = 8) AND IdB IN (SELECT DISTINCT IdB FROM tab1 where count(idb) > 1)
Non funzionerà MAI ma non posso provare. E' il meglio che riesco a fare con le mie conoscenze rimaste di SQL
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:04.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v