Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Query nidificata

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43

    Query nidificata

    Salve a tutti avrei un problema con la seguente query dove sbaglio

    UPDATE aggiunti
    SET prenotato = "1"
    WHERE libro =8094 and data (select max(aggiunti.data) from aggiunti);

    vorrei semplicemente modificare il campo prenotato assegnandogli 1 a quel record che ha come campo libro 8094 e come data la data più vecchia.

    l'errore che mi fornisce mysql è il seguente

    #1093 - You can't specify target table 'aggiunti' for update in FROM clause




  2. #2
    update punta ad uno specifico record. Non puo' andare a pescare dei record di riferimento nella sua stessa tabella.

    Poi occhio che la data piu' vecchia e' la piu' piccola min e non max che e' la piu' recente

    Puoi fare semplicemente:

    UPDATE aggiunti
    SET prenotato = "1"
    WHERE libro = 8094
    order by data asc
    limit 1

    ma anche cosi' sarai poi impreciso perche' al prossimo aggiornamento di quel libro che farai?

    where libro = 8094 and prenotato < 1

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

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    Grazie per avermi risposto... ma non ho capito cosa vuoi dire puoi essere piu preciso gentilmente? grazie....

  4. #4
    Quote Originariamente inviata da daniele5 Visualizza il messaggio
    Grazie per avermi risposto... ma non ho capito cosa vuoi dire puoi essere piu preciso gentilmente? grazie....
    UPDATE non puo' scegliere un record da aggiornare con una sub-query select che cerca contemporaneamente all'update un record nella sua stessa tabella, anzi non credo lo faccia nessuno. Dovresti provare con un UPDATE MULTITABLE ma se sei gia' in difficolta' con un update non credo sia il caso almeno per ora e comunque servirebbe conoscere bene la struttura della tabella..

    Puoi fare come ho suggerito oppure fai prima una select e selezioni il record da aggiornare che poi passerai all'update che tipicamente sara' identificato dall'ID (ecco un esempio di cosa serve l'ID del record)

    La seconda annotazione:
    Se aggiorni sempre il piu' vecchio aggiornerai sempre lo stesso record (il piu' vecchio) a meno che tu non lo cancelli oppure lo identifichi diversamente aggiungendo una condizione tipo quella suggerita.
    Ultima modifica di piero.mac; 24-07-2015 a 10:37

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

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    grazie per l'aiuto ma ho risolto in un altro modo

  6. #6
    Quote Originariamente inviata da daniele5 Visualizza il messaggio
    grazie per l'aiuto ma ho risolto in un altro modo
    Beh! dai, non lasciarci con il fiato sospeso. Rendici partecipi.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    43
    scusa per il ritardo comunque ho impostato la query in altro modo vedendo il problema da un altro punto di vista

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.