Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725

    [MySql] Update ultimi record per 'tipologia'

    Ciao a tutti avrei un problemino con una query di Update.

    La tabella sulla quale sto lavorando è così composta:
    codice:
     
    id, intervento, stato
    1,  1,              0
    2,  1,              2
    3,  2 ,             3
    4,  2 ,             0
    5,  2 ,             3
    6,  2 ,             4
    7,  3 ,             5
    8,  4 ,             0
    9,  4,              2
    ... ecc
    Avrei bisogno con una query di modificare per ogni intervento solo l'ultimo id per ogni intervento quindi in questo esempio : id 2,6,7,9. La query dovrebbe quindi fare l'update sulla tabella dove per ogni intervento c'è l'id massimo, inserendo stato=1

    risultato da ottenere:
    codice:
     
    id, intervento, stato
    1,  1,              0
    2,  1,              1
    3,  2 ,             3
    4,  2 ,             0
    5,  2 ,             3
    6,  2 ,             1
    7,  3 ,             1
    8,  4 ,             0
    9,  4,               1
    ... ecc
    Per riuscire a selezionare l'ultimo id per ogni intervento ho fatto questa query:
    codice:
    SELECT max(id) from tabella group by intervento
    Ora mi servirebbe una mano per fare l'update.
    Magari sarà una cavolata ma mi stò proprio perdendo.

    Grazie mille a tutti
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  2. #2
    Utente di HTML.it L'avatar di comas17
    Registrato dal
    Apr 2002
    Messaggi
    6,523
    Mi verrebbe da dire ...

    update tabella set stato = 1 where id in (SELECT max(id) as id from tabella group by intervento)

  3. #3
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Ciao intanto grazie per la risposta, purtroppo però mi restituisce errore, ho fatto questa query:

    update nometabella set stato = 1 where id in (SELECT max(id) as id from nometabella group by intervento)

    E mi restituisce l'errore:
    you can't specify target table 'nometabella' for update in FROM clause


    Tra l'altro se eseguo solo la query in parentesi funge, è la parte che associa la query in parentesi alla condizione where che non funge credo anche se l'errore me lo dà sull'uso del From nella parentesi
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Aires
    Ciao intanto grazie per la risposta, purtroppo però mi restituisce errore, ho fatto questa query:

    update nometabella set stato = 1 where id in (SELECT max(id) as id from nometabella group by intervento)

    E mi restituisce l'errore:
    you can't specify target table 'nometabella' for update in FROM clause


    Tra l'altro se eseguo solo la query in parentesi funge, è la parte che associa la query in parentesi alla condizione where che non funge credo anche se l'errore me lo dà sull'uso del From nella parentesi
    Prova cosi'

    Codice PHP:
    update nometabella a
    set a
    .stato 
    where a
    .id in (SELECT max(b.id) as id 
                           from nometabella b 
                          group by b
    .intervento
    Purtroppo non ho modo di provarla, ma dovrebbe andare.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    codice:
    update nometabella set stato = 1 where id in (select * from (select max(id) as id from nometabella group by intervento) as tab)

  6. #6
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Grazie per la risposta. Purtroppo però mi da un errore strano:

    update nometabella a set a.stato = 1 where a.id in (SELECT max(b.id) as id from nometabella b
    group by b.intervento)

    Copiata pari pari, sostituendo solo a nometabella, la tabella in questione, restituisce:
    you can't specify target table 'a' for update in FROM clause

    Mi sarebbe stato più chiaro se dava errore sulla tabella b :master:

    Sinceramente sono spiazzato
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  7. #7
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da nicola75ss
    codice:
    update nometabella set stato = 1 where id in (select * from (select max(id) as id from nometabella group by intervento) as tab)
    Funziona perfettamente, è la seconda volta che mi risolvi il problema, grazie davvero infinite.
    Grazie mille anche a mosquito e comas che hanno dato consigli.

    Conoscete qualche sito/guida italiana avanzata di sql, purtroppo trovo spesso appunti imprecisi e sarebbe utile approfondire l'argomento.

    Grazie mille a tutti davvero e buona giornata
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Tutti i blog e manuali migliori sono in inglese.

  9. #9
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da nicola75ss
    Tutti i blog e manuali migliori sono in inglese.
    Immaginavo purtroppo lo mastico discretamente
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da Aires
    Immaginavo purtroppo lo mastico discretamente
    Se lo mastichi discretamente allora non avrai problemi col manuale ufficiale.

    Inoltre su

    http://planet.mysql.com/

    trovi una marea di articoli interessanti e sempre su planet mysql sulla destra ci sono i link di tanti blog davvero utili.

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