• User

    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
    Like %5 mi restituisce sia 5 che 15
    Like 5% mi restituisce sia 5 che 50

    Spero di essere stato chiaro... un ringraziamento a tutti.


  • Super User

    Ciao brostin,potresti fare così:
    Mettiamo che il risultato della query estratta sia contenuto in $res.
    [php]
    <?
    $res=explode(",",$res);
    if (in_array(5,$res)){
    // istruzione se è presente il 5
    }
    else{

    // istruzione da svolgere in caso il 5 non sia presente
    }
    [/php]
    Ciao! 😉


  • User Attivo

    Puoi fare:
    proto.estensione = '5' OR proto.estensione LIKE '5,%' OR proto.estensione LIKE '%,5' OR proto.estensione LIKE '%,5,%'

    Ossia o è 5 o inizia per 5, o finisce per ,5 o è ,5,