Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [MYSQL] query di update fatta al volo con una select

    Salve a tutti... volevo vedere se fosse possibile eliminare un passaggio sul PHP realizzando una unica queri di UPDATE in SQL.
    Ho una tabella ordini che ha i dati dei costi spese e dei costi aggiuntivi (costo, iva, tasse, totale)
    Poi ho un'altra tabella con gli elementi dell'ordine (costo, iva, tasse, totale)

    Con questa query mi calcolo la somma che poi vorrei andare ad inserire nei rispettivi campi della prima tabella
    Codice PHP:
    SELECT SUM(p1) AS imponibileSUM(p2) AS imposteSUM(p3) AS totale
    FROM 
    (SELECT SUM(costo_spedizione+costo_altro) AS p1,SUM(tasse_spedizione+tasse_altro) AS p2,SUM(totale_spedizione+totale_altro) AS p3
          FROM gestionale_ordini_emessi 
          WHERE id_ordine
    =1
          UNION
          SELECT SUM
    (prezzo) AS p1SUM(val_tasse) AS p2SUM(tot) AS p3
          FROM gestionale_ordini_materiale
          WHERE id_ordine
    =AND _FINE=1
          
    ) AS tab_ordini 
    Qui li leggo in PHP e li inserisco, ma posso creare una query o non so cosa per inserire quei 3 valori direttamente al loro posto in SQL senza passare da PHP? Stored procedure? potrebbe essere questa la soluzione?
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

  2. #2
    Ho trovato questa soluzione... ma non vorrei fosse troppo esosa, che mi dite?

    Codice PHP:
    UPDATE gestionale_ordini_emessi
    SET 
    imponibile
    =(SELECT SUM(p1FROM (SELECT SUM(costo_spedizione+costo_altro) AS p1 FROM gestionale_ordini_emessi WHERE id_ordine=1 UNION SELECT SUM(prezzo) AS p1 FROM gestionale_ordini_materiale WHERE id_ordine=AND _FINE=1) AS tab_ordini) ,
    imposte=(SELECT SUM(p2FROM (SELECT SUM(tasse_spedizione+tasse_altro) AS p2 FROM gestionale_ordini_emessi WHERE id_ordine=1 UNION SELECT SUM(val_tasse) AS p2 FROM gestionale_ordini_materiale WHERE id_ordine=AND _FINE=1) AS tab_ordini) ,
    totale=(SELECT SUM(p3FROM (SELECT SUM(totale_spedizione+totale_altro) AS p3 FROM gestionale_ordini_emessi WHERE id_ordine=1 UNION SELECT SUM(tot) AS p3 FROM gestionale_ordini_materiale WHERE id_ordine=AND _FINE=1) AS tab_ordini
    WHERE id_ordine=
    devo rifare le select 3 volte... mentre prima ne facevo una al volo con i 3 risultati
    La fantasía, abandonada de la razón, produce monstruos imposibles; unida con ella es madre de las artes y origen de las maravillas.
    (Francisco Goya)
    ----------------------------------------
    http://www.mangioebevo.it
    http://www.definitives.org

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.