Query di update con clausola Like

di il
8 risposte

Query di update con clausola Like

Buongiorno a tutti, dovrei eseguire un update su una tabella del mio database mysql tramite phpmyadmin,
non riesco ad eseguire l'update ed ho l'impressione che il problema sia nella mia impostazione di query

UPDATE appuntamenti SET `targa` = "AA123AA" WHERE cliente LIKE "%BIANCHI LUIGI%" AND `veicolo` LIKE "%FIAT 500%"
naturalmente se eseguo la query di SELECT la stessa viene correttamente eseguita

SELECT * FROM `appuntamenti` WHERE cliente = "BIANCHI LUIGI" AND `veicolo` LIKE "%FIAT 500%";
Sareste cosi gentili da spiegarmi come potrei risolvere ?

Grazie mille.

8 Risposte

  • Re: Query di update con clausola Like

    Ma questi apici `` li metti un po' a caso? Io li toglierei tutti
  • Re: Query di update con clausola Like

    Ciao Oregon, no non li metto a caso, racchiudo tra essi il nome delle tabelle

    oregon ha scritto:


    Ma questi apici `` li metti un po' a caso? Io li toglierei tutti
    ad ogni modo, pur eliminandoli non cambia il risultato, ovvero mi vengono restituire sempre 0 Row

    A mio avviso il problema sembrerebbe legato alla sintassi della clausola LIKE
  • Re: Query di update con clausola Like

    NON SONO uguali:
    
    WHERE cliente LIKE "%BIANCHI LUIGI%" AND `veicolo` LIKE "%FIAT 500%"
    
    
    WHERE cliente = "BIANCHI LUIGI" AND `veicolo` LIKE "%FIAT 500%";
    
    Giusto per ""scrupolo"", usa ESATTAMENTE la clausola WHERE che usi con la SELECT che ti funziona.

    Controlla anche se le ""virgolette"" non gli stiano antipatiche.
    IN TEORIA bisognerebbe usare gli ""apici"".

    Cioe':
    
    ... LIKE '%BIANCHI LUIGI%'
    
    (apici)

    e non
    
    ... LIKE "%BIANCHI LUIGI%"
    
    (virgolette)

    IN TEORIA apici e virgolette dovrebbero essere interscambiabili, ma meglio controllare, visto che hai questi problemi.
  • Re: Query di update con clausola Like

    Come dice @migliorabile, inizia ad assegnare i valori con apice e non virgolette. Inoltre i due esempi fatti hanno la condizione where differente.
    In quella where condition dell'update stai dicendo di eseguirla per chiunque abbia nel suo nominativo la sottostringa "luigi bianchi". Stessa cosa per l'automobile. E' insensato.
    Se luigi bianchi possiede due fiat 500 che fai? gli attribuisci la stessa targa?
  • Re: Query di update con clausola Like

    Allora questa è la mia SELECT con condizione WHERE perfettamente funzionante (Row 7)
    
    SELECT * FROM `appuntamenti` WHERE cliente = 'BIANCHI LUIGI' AND `veicolo` LIKE '%FIAT 500%' 
    
    Se eseguo una query di update con le medesime condizioni, ottengo Row 0
    
    UPDATE appuntamenti SET targa = 'AA123AA' WHERE cliente = 'BIANCHI LUIGI' AND `veicolo` LIKE '%FIAT 500%' 
    
  • Re: Query di update con clausola Like

    Strano!

    Ovviamente 'targa' esiste, giusto? Scritta tutta in minuscolo!

    In ogni caso, altra osservazione.

    Usi i BACKQUOTE ("`") un po' a casaccio.

    1) USALI SEMPRE
    2) NON USARLI MAI
    3) se decidi di usarli con certi oggetti, USALI SEMPRE con gli stessi oggetti.

    Ad esempio
    
    SELECT * FROM `appuntamenti` ...
    
    CON backquote
    
    UPDATE appuntamenti ...
    
    SENZA backquote

    PERCHE' ???

    Non cambiera' niente, ma vai tu a saperlo ...
  • Re: Query di update con clausola Like

    migliorabile ha scritto:


    Ovviamente 'targa' esiste, giusto? Scritta tutta in minuscolo!
    Nella database è presente una colonna "targa", la maggior parte ha valore NULL perchè si tratta
    di un colonna che è stata aggiunta al database in un secondo momento, ecco che adesso nasce l'esigenza
    di assegnare un valore a tutti i campi targa che soddisfano le condizioni dettata dall'UPDATE...


    Ho provato anche ad impostare, come giustamente mi è stato fatto notare più volte,
    i BACKTICK in maniera corretta
    UPDATE `appuntamenti` ...
    ma il risultato è sempre 0 Row


  • Re: Query di update con clausola Like

    Non è che ti dà "0 Rows" perchè stai guardando la zona dove generalmente vengono visualizzate le righe delle SELECT?
    Perchè sarebbe "corretto", nel senso che una UPDATE non produce nessuna riga di output.

    Ora, io non uso PhpMyAdmin, generalmente uno la console di mysql, ma mi aspetterei, da qualche parte, un messaggio di "X rows affected" (con X pari al numero di righe che ti escono nella SELECT con quella WHERE).
Devi accedere o registrarti per scrivere nel forum
8 risposte