Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Aiuto query UPDATE

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    23

    Aiuto query UPDATE

    Ciao a tutti,

    devo creare una query di update di una tabella mysql; nello specifico questa query deve aggiornare il valore "mail" NULL prendendo il valore da un altra rriga con lo stesso "codfis" dove quel dato è valorizzato.

    Spero di essermi fatto capire......

    Quest è la struttura della tabella

    codice:
    CREATE TABLE `attivazioni` (
      `id` int(10) NOT NULL AUTO_INCREMENT,
      `cognome` varchar(50) NOT NULL,
      `nome` varchar(50) NOT NULL,
      `codfis` varchar(30) NOT NULL,
      `tel` varchar(30) DEFAULT NULL,
      `mail` varchar(50) DEFAULT NULL,
      `benefici` varchar(5) NOT NULL,
      `comitato` varchar(50) NOT NULL,
      `regione` varchar(30) NOT NULL,
      `dal` date NOT NULL,
      `al` date NOT NULL,
      `attivita` varchar(100) NOT NULL,
      `dettaglio` varchar(100) DEFAULT NULL,
      `destinazione` varchar(100) DEFAULT NULL,
      `note` tinytext DEFAULT NULL,
      `giorni` int(10) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1

  2. #2
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    più o meno è questa:
    codice:
    UPDATE 
    (SELECT attivazioni.codfis, attivazioni.mail FROM attivazioni WHERE (attivazioni.mail Is Null))  AS Q01 
    INNER JOIN 
    (SELECT attivazioni.codfis, attivazioni.mail FROM attivazioni WHERE (attivazioni.mail Is Not Null))  AS Q02 
    ON Q01.codfis = Q02.codfis 
    SET Q01.mail = Q02.mail
    ;
    pero ho un dubbio .......
    oltre ad avere codfis uguali con mail piene oppure vuote
    potresti avere anche dei codfis uguali con PIU mail piene ?????
    e in questo caso quale prendi ????
    Ultima modifica di nman; 23-04-2021 a 00:23

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    23
    il risultato atteso è che ci sia una mail uguale per tutti i row che hanno quel codfis

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    23
    poi ho provato la query sul DB di test è mi da il seguente errore

    codice:
    Error Code : 1288
    The target table Q01 of the UPDATE is not updatable

  5. #5
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da iw8ffg Visualizza il messaggio
    il risultato atteso è che ci sia una mail uguale per tutti i row che hanno quel codfis
    Questo non era nella richiesta iniziale,
    indipendentemente dai record vuoti potresti benissimo avere fra i record già popolati mail diverse per lo stesso codfis

    Comunque questo non puoi risolverlo solo con una UPDATE

  6. #6
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Quote Originariamente inviata da iw8ffg Visualizza il messaggio
    codice:
    Error Code : 1288
    The target table Q01 of the UPDATE is not updatable
    Mhhhh !!!!!!
    strano, su altri DB funziona, pero ti confesso che io non ho un MySql per testarla bene

    Se Q01 non è UPDATABILE potrebbe essere perche gli mancano le Key al suo interno
    prova cosi:
    codice:
    UPDATE 
    (SELECT attivazioni.id, attivazioni.codfis, attivazioni.mail FROM attivazioni WHERE (attivazioni.mail Is Null))  AS Q01 
    INNER JOIN 
    (SELECT attivazioni.id, attivazioni.codfis, attivazioni.mail FROM attivazioni WHERE (attivazioni.mail Is Not Null))  AS Q02 
    ON Q01.codfis = Q02.codfis 
    SET Q01.mail = Q02.mail
    ;
    .

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    23
    continua a dare lo stesso errore

  8. #8
    forse una cosa del genere --- ma prima fatti un backup!


    codice:
    UPDATE
       attivazioni Q1
    INNER JOIN 
       (SELECT attivazioni.id, attivazioni.codfis, attivazioni.mail FROM attivazioni WHERE (attivazioni.mail Is Not Null)) Q2 
       ON Q1.codfis = Q2.codfis 
    SET 
       Q1.mail = Q2.mail
    WHERE
       Q1.mail Is Null
    ;

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2019
    Messaggi
    23
    Grazie mille.... sembra che adesso funziona

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.