|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Jan 2005
Città: La Spezia
Messaggi: 103
|
Una query che non mi riesce...
Salve gente, ricorro al vostro aiuto per un problema al quale non riesco a venire a capo.
Vorrei sostanzialmente che la select mi estraesse tutti i record dove compare il valore 5. Quindi... SELECT proto.protocolloID, proto.A_P, proto.estensione, FROM proto WHERE (proto.estensione = 5) e il codice restituisce correttamente tutti i record che sono valorizzati a 5 nel campo proto.estensione. Il mio problema è che nel campo proto.estensione i valori presenti possono essere anche + di uno, ad esempio: opz.1) su record 1 il valore del campo proto.estensione è pari a 5 ( unico valore ) opz.2) su record 2 il valore del campo proto.estensione è pari a 3 e 5 ( cioe' due valori distinti) in questa modalità : 3,5 opz.3) su record 3 il valore del campo proto.estensione è pari a 3,5 e 9 ( cioe' tre valori distinti) in questa modalità 3,5,9 opz.4) su record 4 il valore del campo proto.estensione è pari a 3,5,15 ecc. Come posso operare se volessi quindi estrarre i records dove compare il valore 5 relativamente alle opzioni n. 1 2 e 3. Ho provato l'operatore Like ma i risultati non sono precisi. Like o = 5 mi restituisce solo i record dove esiste un solo valore pari a 5 |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
WHERE
X='5' or X LIKE '%,5,%' or X LIKE '5,%' or X LIKE '%,5' EDIT Questo nel caso i tuoi record siano delle stringhe con i numeri separati dalle virgole e senza spazi, tipo "1,4,5,7,8"
__________________
Il sole è giallo Ultima modifica di yorkeiser : 01-03-2007 alle 15:35. |
![]() |
![]() |
![]() |
#3 | |
Member
Iscritto dal: Jan 2005
Città: La Spezia
Messaggi: 103
|
Quote:
Il dato 5 in realtà non è un dato statico ma dinamico in quanto dovrebbe essere valorizzato da una variabile. Mi spiego meglio. Nel mio database ci sono n utenti ognuno dei quali possiede ovviamente un userID. Come penso avrai capito vorrei che il valore di 5 fosse in realtà valorizzato a seconda dell'utente che esegue il login al sistema. Ti passo la palla e spero anche stavolta di essere stato chiaro... grazie... |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
basta mettere il nome della variabile che contiene l'id dello user, non vedo il problema......se stai facendo il login da software basta memorizzarti la variabile, se invece lo stai facendo via web, lo tiene la session(o il bean)
__________________
My gaming placement |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Quote:
__________________
Il sole è giallo |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Jan 2005
Città: La Spezia
Messaggi: 103
|
Perdonami per non averti passato subito queste informazioni. Dunque trattasi di una piccola applicazione Web strutturata su DB Mysql mentre le chiamate al db vengono eseguite su pagine php....
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jul 2006
Città: Tristram
Messaggi: 517
|
Su questo non posso aiutarti, non conosco php nè utilizzo mySQL. Troverai sicuramente qualcuno qui che ti dà una mano.
Nel caso tu faccia la chiamata al DB direttamente da php inizializzando la query come una stringa all'interno del codice, basta che ti costruisci la stringa sostituendo al 5 una variabile che hai inizializzato col numero corretto. Esempio in pseudocodice: String a="13"; "SELECT * FROM PINCOPALLINO WHERE X=' " + a + " ' " In questo caso, la parte in rosso è la parte "variabile" della query, che viene valutata (a=13) e concatenata (supponendo che l'operatore di concatenamento tra stringhe sia il +) al resto della stringa, quindi ti ritornerebbe SELECT * FROM PINCOPALLINO WHERE X=' 13 '
__________________
Il sole è giallo |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:09.