Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150

    Query di interrogazione "particolare"

    Cari utenti,

    nel mio database mysql ho una tabella che ha la seguente struttura (della quale riporto solo la parte che mi interessa):

    codice:
    CREATE TABLE siti (
      id int(11) NOT NULL default '0',
      
       bla bla bla
    
      categories varchar(25) NOT NULL default '', 
      
      bla bla bla
      
      PRIMARY KEY  (id)
    ) TYPE=MyISAM
    ;


    Ora il record categories è riempito con delle stringhe del tipo:

    :21:27:63:58:123:


    che iniziano con "due punti", terminano con "due punti" ed i vari numeri, separati sempre da "due punti", indicano gli ID delle categorie a cui appartiene un determinato sito (e quindi, in genere, un sito è classificato come appartenente a più categorie ).

    Poichè a me interessa mostrare i vari siti come appartenenti ad una sola categoria , ed in particolare quella indicata dal primo numero (numero 21 nell'esempio), come posso fare la query che traduce:

    "estrami tutti i siti che appartengono alla categoria con ID = 21":

    codice:
    SELECT * FROM siti WHERE ????????????

    Se utilizzo il LIKE e il numero 21 non è al primo posto all'interno della stringa oppure c'è un altro numero che è del tipo 212 (e quindi contiene il numero 21 al suo interno), il sito me lo "tira fuori" lo stesso..



    Grazie anticipatamente a chi vorrà aiutarmi

  2. #2
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    una cosa tipo LIKE "%:21:%" potrebbe funzionare?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Grazie per la risposta.

    No, purtroppo non funziona

    Anche se il numero 21 non si trova all'inizio della stringa, tira fuori ugualmente il sito.

    Cioè se anche la stringa delle categorie è della forma:

    :13:56:77:21 :67:

    il sito viene mostrato

  4. #4
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    allora non ho capito...
    tu devi prendere come riferimento sempre il primo elemento? Del tipo "13" in questa serie ":13:32:5:"?

  5. #5
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da clasku
    allora non ho capito...
    tu devi prendere come riferimento sempre il primo elemento? Del tipo "13" in questa serie ":13:32:5:"?
    Ma perché non modelli correttamente la relazione?

    La categoria di appartenenza del sito dovrebbe trovarsi in una tabella a parte.

    Dovresti avere quindi la tabella SITI e la tabella CATEGORIE_APPARTENENZA dove hai come campi l'id del sito e l'id della categoria.

    Cmq se dovessi prendere SOLO la prima categoria senza cambiare la modellazione, dovresti adoperare delle funzioni sulle stringhe (vedi la substring ad esempio) che ti parsano la string lavorando con i :

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    comunque, se ho capito cosa ti serve (identificare la categoria dal primo numero) puoi cambiare il LIKE
    una cosa come
    codice:
    SELECT tuoi_campi FROM tua_tabella WHERE categoria LIKE ":21:%"
    prova se così fa più al caso tuo, considerando che comunque questo modo di inserire i dati è veramente poco efficiente

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    150
    Grazie clasku !!

    Funziona l'interrogazione:

    codice:
    SELECT tuoi_campi FROM tua_tabella WHERE categoria LIKE ":21:%"

    In effetti si, mi serviva "identificare la categoria dal primo numero" e volevo sapere se c'era appunto un modo rapido come quello che mi hai fornito senza passare per l'elaborazione di stringhe (explode...ecc...).

    Grazia anche a Joe Taras per aver risposto. In realtà la struttura alle tabelle non l'ho fatta io. La dovrò rifare ma ora non ne ho voglia e tempo

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 © 2026 vBulletin Solutions, Inc. All rights reserved.