Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [mysql] aiuto query, verificare se una stringa è in una lista

    Ho un campo VARCHAR(32) in una tabella in cui memorizzo una lista di id separati da virgola, così

    list_ids "23,43,12"

    non riesco a formulare una query che mi restituisca true quando un id è presente in lista.. ad esempio:

    SELECT * FROM oggetti WHERE 'myid' XXXXXX list_ids

    So che esiste IN ma si usa fornendo direttamente nella query una lista tra parentesi () e separata da virgole, non penso sia questo il mio caso.

  2. #2

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    Se myid e list_ids sono due campi della stessa tabella la struttura data lascia a desiderare..... :master:

    Almeno cosi' alla prima impressione....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    myid non è una colonna! lo setto da php, ho tralasciato un $, è $myid

    ... = mysql_query("SELECT * FROM oggetti WHERE '$myid' XXXXXX list_ids");

    che funzionicchia con

    ... = mysql_query("SELECT * FROM oggetti WHERE FIND_IN_SET('$myid', list_ids");

    anche se non è molto performate. mi aspettavo di trovare una specie di EXPLODE() pure per l'sql ma non c'è

  5. #5
    Ma non ti funziona la query tipo quella di carlo2002???

    SELECT * FROM oggetti WHERE $myid IN(list_ids);

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  6. #6
    no macchè, funzionerebbe se list_ids fosse $list_ids allora nella query ci verrebbero stampate le virgole tra un id e l'altro, ma così come lo faccio io, con list_ids che è una colonna, lui la interpreta come 1 stringa e stop... è una questione di ricerca all'interno di uan stringa

    ora voa letto , grazie.

  7. #7
    E allora cerca una stringa...

    SELECT * FROM oggetti WHERE list_ids LIKE '%$myid%' ;

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  8. #8
    giusto, però insorge qualche problema, tipo

    list_ids "23,123,1"

    (non necessariamente ordinata)

    se cerco 1 mi restituisce anche 123, idem se cercassi 2. quindi devo dirgli di cercare %,1,% , ma allora devo mettere la virgola anche all'inizio e alla fine della lista ",23,123,1," , e quando explodo con php mi ritrovo con due stringhe nulle in cima ed in findo al vettore. questa cosa puzzava sin dall'inizio, me ne rendo conto, progettare un campo di modo che funzioni a modo con una funzione() non è un modo di procedere corretto

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.