Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107

    query per aggiornare tabella

    Ciao!
    avrei bisogno di un aiuto per una query che non riesco a definire.
    Allora, ho una tabella con alcuni campi già popolati e gli altri settati a null, e devo aggiornare questi ultimi con i valori presi da un'altra tabella.
    Le due tabelle non hanno lo stesso numero di colonne, ma hanno in comune i campi che devo aggiornare (stesso tipo e nome).
    Allora, ho pensato di fare un join tra le due tabelle, ma poi non so come usare il risultato del join per aggiornare la prima tabella.

    Per essere chiaro vi posto le due tabelle.
    Tabella principale (completamente popolata) da cui devo estrarre i dati:
    http://img687.imageshack.us/img687/3411/tab1n.jpg

    Tabella secondaria, (primi 4 campi popolati, gli altri 2 settati a null):
    http://img717.imageshack.us/img717/444/tab2.jpg

    Adesso a me interessa aggiornare i campi fanta_voto e voto della seconda tabella (giornatax, in cui ci sono un gruppo di giocatori), con quelli della prima tabella (voti_giornatax, in cui ci sono tutti i giocatori della serie A).
    Quindi, la query dovrebbe fare questo:
    aggiornare la tabella giornatax e settare giornatax.fanta_voto=voti_giornatax.fanta_voto e giornatax._voto=voti_giornatax._voto dove giornatax.giocatore=voti_giornatax.giocatore

    grazie per qualsiasi tipo di aiuto e suggerimento!

  2. #2
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    ciao , non potresti prelevare i dati della prima tabella con una select e poi aggiornarli con un update nella seconda?

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Originariamente inviato da tapu
    ciao , non potresti prelevare i dati della prima tabella con una select e poi aggiornarli con un update nella seconda?
    Sì, infatti è l'unica soluzione che ho trovato finora...in una prima query eseguo il join tra le due tabelle e seleziono le colonne che mi servono, poi eseguo tante query quante sono le righe della tabella da aggiornare.
    Il problema, però, è proprio questo: che così mi tocca fare un sacco di queries..speravo ci fosse un modo più semplice e veloce.
    Ad esempio fare una cosa del genere:

    UPDATE giornatax SET gol=(SELECT gx.gol,gx... FROM voti_giornatax AS vgx RIGHT JOIN giornatax AS gx ON vgx.giocatore=gx.giocatore) WHERE giornatax.giocatore=voti_giornatax.giocatore

    Ma evidentemente la sintassi è sbagliata o non si può fare una cosa del genere con UPDATE (mentre con INSERT ci sono riuscito, ma mi ovviamente mi crea una nuova riga e io invece devo solo aggiornarla, o meglio completarla).

    Vabbè, a questo punto terrò come buona la prima soluzione!
    grazie lo stesso!

  4. #4
    Utente di HTML.it L'avatar di tapu
    Registrato dal
    May 2008
    Messaggi
    885
    bhe non devi fare una sfilza di query, se ho capito bene ti serve recuperare i valori della prima tabella e poi aggiornare la seconda con i medesimi valori.

    fai una select sulla prima e prelevi tutti i dati che ti interessano, nel mentre prelevi i dati (Quindi all interno del ciclo while) esegui un update sulle righe della seconda tabella che tiinteressano ... praticamente fai ciclare la prima tabella, 'bloccando' i vcalori del primo record di tabella 1, al suo interno (se le condizioni sono soddisfatte) aggiorni, dopo questo passi al secondo record di tabella 1 e cosi via!


    non devi scrivere mille query ma 2.
    se poi fai tutto in una funzioncina a se diventa ancora più elegante!!!

    ciao!

    p.s. non sono un manico di sql!
    ciao

  5. #5
    puoi usare tranquillamente la JOIN nella tua UPDATE

    codice:
    UPDATE tabella1
    SET tabella1.campo=tabella2.campo
    FROM tabella1 JOIN tabella2 ON tabella1.campo_join=tabella2.campo_join
    facci sapere

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107
    Originariamente inviato da tapu
    bhe non devi fare una sfilza di query, se ho capito bene ti serve recuperare i valori della prima tabella e poi aggiornare la seconda con i medesimi valori.

    fai una select sulla prima e prelevi tutti i dati che ti interessano, nel mentre prelevi i dati (Quindi all interno del ciclo while) esegui un update sulle righe della seconda tabella che tiinteressano ... praticamente fai ciclare la prima tabella, 'bloccando' i vcalori del primo record di tabella 1, al suo interno (se le condizioni sono soddisfatte) aggiorni, dopo questo passi al secondo record di tabella 1 e cosi via!

    non devi scrivere mille query ma 2.
    se poi fai tutto in una funzioncina a se diventa ancora più elegante!!!
    Eh, ma io maccio una prima query per estrarre i valori dalle colonne della prima tabella, eppoi un query UPDATE per ogni riga che devo aggiornare nella seconda tabella. Come faccio a fare solo due query?

    Questo è il codice php:
    Codice PHP:
        $query_voti=mysql_query("SELECT vg.giocatore,vg.fanta_voto,vg.voto FROM voti_giornata AS vg JOIN giornata1 AS g1 ON vg.giocatore=g1.giocatore") or die("Query fallita: ".mysql_error());
    while(
    $array_voti mysql_fetch_array($query_votiMYSQL_ASSOC)) {
      
    $giocatore=$array_voti['giocatore'];
      
    $fanta_voto=$array_voti['fanta_voto'];
      
    $voto=$array_voti['voto'];
      
    $agg_query=mysql_query("UPDATE giornata1 SET fanta_voto='$fanta_voto',voto='$voto' WHERE giocatore='$giocatore'") or die("Query fallita: ".mysql_error());



    Originariamente inviato da optime
    puoi usare tranquillamente la JOIN nella tua UPDATE

    codice:
    UPDATE tabella1
    SET tabella1.campo=tabella2.campo
    FROM tabella1 JOIN tabella2 ON tabella1.campo_join=tabella2.campo_join
    facci sapere
    sei sicuro che si possa usare il FROM sull'operazione UPDATE? mi dà errore di sintassi..
    mi sono riguardato la guida di Mysql presente su questo sito e nella sintassi non dava la clausola FROM..però non sono riuscito a trovare un manuale completo per vedere se si può..

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da pape86
    Eh, ma io maccio una prima query per estrarre i valori dalle colonne della prima tabella, eppoi un query UPDATE per ogni riga che devo aggiornare nella seconda tabella. Come faccio a fare solo due query?

    Questo è il codice php:
    Codice PHP:
        $query_voti=mysql_query("SELECT vg.giocatore,vg.fanta_voto,vg.voto FROM voti_giornata AS vg JOIN giornata1 AS g1 ON vg.giocatore=g1.giocatore") or die("Query fallita: ".mysql_error());
    while(
    $array_voti mysql_fetch_array($query_votiMYSQL_ASSOC)) {
      
    $giocatore=$array_voti['giocatore'];
      
    $fanta_voto=$array_voti['fanta_voto'];
      
    $voto=$array_voti['voto'];
      
    $agg_query=mysql_query("UPDATE giornata1 SET fanta_voto='$fanta_voto',voto='$voto' WHERE giocatore='$giocatore'") or die("Query fallita: ".mysql_error());


    sei sicuro che si possa usare il FROM sull'operazione UPDATE? mi dà errore di sintassi..
    mi sono riguardato la guida di Mysql presente su questo sito e nella sintassi non dava la clausola FROM..però non sono riuscito a trovare un manuale completo per vedere se si può..
    E' stata una disattenzione di optime
    Sostituisci il WHERE al FROM

    codice:
    UPDATE tabella1
    SET tabella1.campo=tabella2.campo
    WHERE tabella1 JOIN tabella2 ON tabella1.campo_join=tabella2.campo_join

  8. #8
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922

    Re: query per aggiornare tabella

    Originariamente inviato da pape86
    Ciao!
    avrei bisogno di un aiuto per una query che non riesco a definire.
    Allora, ho una tabella con alcuni campi già popolati e gli altri settati a null, e devo aggiornare questi ultimi con i valori presi da un'altra tabella.
    Le due tabelle non hanno lo stesso numero di colonne, ma hanno in comune i campi che devo aggiornare (stesso tipo e nome).
    Allora, ho pensato di fare un join tra le due tabelle, ma poi non so come usare il risultato del join per aggiornare la prima tabella.

    Per essere chiaro vi posto le due tabelle.
    Tabella principale (completamente popolata) da cui devo estrarre i dati:
    http://img687.imageshack.us/img687/3411/tab1n.jpg

    Tabella secondaria, (primi 4 campi popolati, gli altri 2 settati a null):
    http://img717.imageshack.us/img717/444/tab2.jpg

    Adesso a me interessa aggiornare i campi fanta_voto e voto della seconda tabella (giornatax, in cui ci sono un gruppo di giocatori), con quelli della prima tabella (voti_giornatax, in cui ci sono tutti i giocatori della serie A).
    Quindi, la query dovrebbe fare questo:
    aggiornare la tabella giornatax e settare giornatax.fanta_voto=voti_giornatax.fanta_voto e giornatax._voto=voti_giornatax._voto dove giornatax.giocatore=voti_giornatax.giocatore

    grazie per qualsiasi tipo di aiuto e suggerimento!
    Credo ti basti una semplice query

    codice:
    update giornatax as gx,voti_giornatax as vgx
    set gx.fanta_voto = vgx.fanta_voto,
        gx.voto = vgx.voto
    where gx.giocatore = vgx.giocatore
    Per precauzione testala su una copia di backup della tabella.

    Fai attenzione che se definisci un campo come decimal (2,1) , il valore massimo consentito sarà 9.9 e non potrai assegnare quindi un ipotetico 10 a un giocatore.

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    107

    Re: Re: query per aggiornare tabella

    Originariamente inviato da nicola75ss
    Credo ti basti una semplice query

    codice:
    update giornatax as gx,voti_giornatax as vgx
    set gx.fanta_voto = vgx.fanta_voto,
        gx.voto = vgx.voto
    where gx.giocatore = vgx.giocatore
    Per precauzione testala su una copia di backup della tabella.

    Fai attenzione che se definisci un campo come decimal (2,1) , il valore massimo consentito sarà 9.9 e non potrai assegnare quindi un ipotetico 10 a un giocatore.

    evvvaiiii!!!! grandissimo!!!
    funziona!! proprio questo volevo, una semplice query che mi facesse tutto in un unico passaggio!
    grazie mille!!! anche per la precisazione del campo di tipo decimal..in effetti mi serve un decimal(3,1)!

    grazie infinite a tutti per l'aiuto!

  10. #10
    Ciao a tutti,
    mi sono imbattuto in questo 3d perchè non riesco ad aggiornare alcuni dati nella tabB provenienti dalla tabA.

    Sql = "update tabB (calciatore, squadra, status) select (calciatore, squadra, status) where tabA"

    set rs=conn.execute(Sql)

    Mi continua a dare questo errore e non capisco:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [MySQL][ODBC 3.51 Driver][mysqld-5.7.44-48-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(calciatore, squadra, status) select (calciatore, squadra, status) where tabA' at line 1
    /fantacalcio/tabA/alternative_session.asp, line 10



    la line 10 corrisponde al comando di chiusura set rs=conn.execute(Sql).... le poche ferie fanno effetto e non ci arrivo proprio!!

    Grazie
    Ciao
    Ultima modifica di Leftist73; 27-08-2025 a 18:24

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.