Visualizzazione risultati 1 fino 15 di 15

Discussione: SQL Unione celle su DUE database

  1. #1
    Guest

    Predefinito SQL Unione celle su DUE database

    Buongiorno a tutti. Ho una problematica su una query "trovata" in rete e adattata alla mia situazione. HO 1 database contenente 8 campi di qui solo 1 è di mio interesse, il quale vorrei riportare in un'altro database...ecco la query:

    SELECT SUM(TOTALE_TROTE) FROM ( SELECT TOTALE_TROTE FROM Tabella_1 UNION ALL SELECT TOT_TROTE FROM Tabella_2) AS A

    Come si evince dalla query è un database sulla pesca e vorrei che la colonna TOTALE_TROTE in Tabella_1, riportasse la somma complessiva della colonna in Tabella_2 alla voce TOT_TROTE.
    Il problema, se così si può chiamare è che quando lancio la query, in Tabella_2 non vedo il risultato. ....

  2. #2
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non hai due database, hai un database con due tabelle.

    Ciò detto, eseguendo la query ottieni un record set contenente una sola riga ed una sola colonna (SUM(TOTALE_TROTE)) il cui valore è la somma di tutti i campi TOTALE_TROTE in Tabella_1 e Tabella_2. Nessuna tabella viene modificata nel processo. Era quello che volevi, o intendevi ottenere un risultato diverso?

    Il problema, se così si può chiamare è che quando lancio la query, in Tabella_2 non vedo il risultato. ....
    Se vuoi salvare il risultato in Tabella_2, dopo la lettura hai bisogno di effettuare un'operazione di INSERT (o UPDATE).

    Forse ciò che intendi ottenere sarebbe più chiaro con qualche esempio.

  3. #3
    Guest

    Predefinito

    Ti ringrazio per avermi fatto notare i termini adatti.
    Parto con l'esempio :
    IL socio inserisce manualmente questo valore in colonna TOTALE_TROTE (Tabella_1) e a ogni pescata corrisponde un totale. A questo punto vorrei far si che la Tabella_2 ottenga una somma di tutte le immissioni in colonna TOTALE_TROTE in maniera automatica.
    Il giorno 26 il socio inserisce un totale di 8
    Il.giorno 27 inserisce un totale di 4
    Ecc...ecc...
    In Tabella_2 il Totale sarà 12

  4. #4
    Guest

    Predefinito

    Forse per complicare meno la vita al socio con immissione manuale, sarebbe più logico fare una somma delle colonne che precedono la colonna TOTALE_TROTE, così da avere già il calcolo delle ipotetiche 8 trote del giorno 26....ma questo cercherò di farmelo da solo....pensiamo a questo che per me ha una difficoltà maggiore....

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Tabella_2 contiene solo il totale delle trote pescate (la somma del pescato giornaliero di tutti i soci), oppure contiene una riga per ciascun socio (col totale relativo a quel socio)? In quest'ultimo caso la situazione delle tabelle è qualcosa del genere:
    Tabella_1 (al giorno 26/10/16)
    Codice:
    | id_socio |  giorno  | totale_trote |
    +----------+----------+--------------+
    |        4 | 24/10/16 |            8 |
    |        2 | 24/10/16 |            4 |
    |        4 | 25/10/16 |            2 |
    |        2 | 25/10/16 |            3 |
    |        4 | 26/10/16 |            6 |
    +----------+----------+--------------+
    Tabella_2 (al giorno 26/10/16)
    Codice:
    | id_socio |  totale_trote |
    +----------+---------------+
    |        4 |            16 |
    |        2 |             7 |
    +----------+---------------+
    Probabilmente la procedura più semplice è:
    1. il socio (con id $id) inserisce la quantità del pescato giornaliero ($nuovo_valore)
    2. il nuovo dato viene inserito in Tabella_1
    3. la quantità cumulata viene aggiornata in Tabella_2


    La query per il punto 2 è abbastanza semplice:
    Codice:
    INSERT INTO Tabella_1 (id_socio, giorno, totale_trote) VALUES (...);
    Per quella del punto 3, invece:
    Codice:
    UPDATE Tabella_2 SET totale_trote = totale_trote + $nuovo_valore WHERE id_socio = $id;
    Però non credo che la Tabella_2 sia necessaria: anziché "fare la fatica" di tenerla aggiornata ad ogni inserimento, puoi recuperare il totale delle trote pescate da un socio (o da tutti i soci) usando SUM:
    Codice:
    SELECT SUM(totale_trote) FROM Tabella_1 WHERE id_socio = ...;

    Ti ringrazio per avermi fatto notare i termini adatti.
    Temo di essere stato involontariamente pedante. Chiedo scusa !

  6. #6
    Guest

    Predefinito

    Caspita....comprendo che sei dell'ambiente però in così poco tempo ....
    Ribadisco il concetto...io proprio ti ringrazio dei teRimini da te regalati! non sentirti pedante che va bene così!
    Parti da questo presupposto: lascia stare l'id! Serve solo il totale globale delle trote (che poi farò anche per il pesce gatto). La Tabella_2 serve da vetrina con i totali globali quindi serve che la.somma di tutta la colonna TOTALE_TROTE in Tabella_1 riporti il totale complessivo aggiornato in Tabella_2 indipendentemente da quanti inserimenti ci siano stati in colonna TOTALE_TROTE o.se preferisci la cambio in TOTALE_GLOBALE. Quindi il socio andrà ad inserire SI, in manuale il valore, ma in Tabella_2 si troverà il.totale globale di tutte le trote fino a quel momento prese.
    Sto decisamente esaurendo il mio vocabolario per esprimerti tale pensiero...spero che questo scritto esaudIsca (per una buona parte) l'idea!

  7. #7
    Guest

    Predefinito

    Nello schema mandatoMi, il totale sarà complessivo cioè NON id_socio 4|Totale_Trote 16 / id_socio 2| Totale_Trote 7...ma un totale complessivo (per citare il.tuo esempio) di 16+7 = 24 e basta!
    Ovviamente auto-aggiornabile quando il socio inserisce manualmente un'altro valore in Tabella_1 Totale_Trote

  8. #8
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Chiaro!
    In questo caso la situazione in Tabella_2 è:
    Codice:
    |  totale_trote |
    +---------------+
    |            23 |
    +---------------+
    E la query di aggiornamento diventa ($nuovo_valore è il valore inserito manualmente dal socio):
    Codice:
    UPDATE Tabella_2 SET totale_trote = totale_trote + $nuovo_valore;

    In alternativa c'è sempre la possibilità di non utilizzare Tabella_2, effettuando una SUM su Tabella_1 al bisogno:
    Codice:
    SELECT SUM(totale_trote) FROM Tabella_1;
    Sarei più propenso a quest'ultimo, poiché elimina il "problema" di mantenere coerenti le tabelle, ma vedi tu come preferisci procedere.

  9. #9
    Guest

    Predefinito

    Scusa la mia ignoranza ma lanciando la query mi da errore : Unknown column 'nuovo_valore' in 'field list'
    Suppongo io debba inserire il.parametro ($nuovo_valore) da qualche parte perché così non va...

    ....Il mio regno per una query!!!!

  10. #10
    Guest

    Predefinito

    Scusate, ma che senso ha creare una tabella con i totali (tabella 2) se per recuperare questi basta una select sulla tabella analitica (tabella1)?

    Per avere una tabella2 basta fare

    Codice PHP:
    SELECT id, SUM(totale_trote) FROM tabella 1 GROUP BY id
    Ultima modifica di vplaza : 27-10-2016 alle ore 13.28.34

  11. #11
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Scusa la mia ignoranza ma lanciando la query mi da errore : Unknown column 'nuovo_valore' in 'field list'
    Suppongo io debba inserire il.parametro ($nuovo_valore) da qualche parte perché così non va...
    Esatto, ho dato per scontato che stessi usando un form HTML per passare i dati ad uno script PHP, nel qual caso devi leggere il valore inserito dal socio ed usarlo nella query al posto del $nuovo_valore che ho usato a titolo di esempio.
    Se non ti è chiaro come procedere, chiedi pure!

    Per il resto concordo con vplaza.

  12. #12
    Guest

    Predefinito

    Buongiorno vplaza e grazie per l'ulteriore aiuto fornito.
    Ho un software per creare siti internet (di qui non farò nome) che può, tramite widget, creare un database view tramite drag&drop.
    Grazie a questo posso accedere ale mie tabelle e spostarli in pagine del sito senza sforzo, presentando su pagine a mia scelta, il "prodotto" che intendo far vedere.
    Per questo mio caso sarebbe opportuno creare più tabelle , cosicché potrò scegliere quale far vedere...e a chi.

  13. #13
    Guest

    Predefinito

    Se vuoi un cosiglio, lascia stare questo tipo di software e impara a scrivere 2 righe di codice. Non è nulla di impossibile e fai le cose per come ti servono.
    Questa impostazione non solo è sbagliata, ma ti mette nelle condizioni di reperire dati errati (Pensa se dimentichi chi fare un aggiornamento).

    PS. Passami una mia impressione personale, il software che stai usando è, per me, uno dei peggiori. Anche se ti sembra di semplificare le cose, in realtà le stai notevolmente ingarbugliando.
    Ultima modifica di vplaza : 27-10-2016 alle ore 16.42.09

  14. #14
    Guest

    Predefinito

    Grazie MZANELLA per l'aiuto, provvederò cercando una soluzione per inserire tale query da te gentilmente offerta!!!!

    Rispondendo all'utente VPLAZA, devo invece dire che forse è stato travisato il modo con il quale io ho creato il database....ho "creato" questa cosa con il my phpmyadmin del pannello altervista, quindi tutto a mano...e per me che sono ignorante è stata una bella sfida! il software mi fa solo vedere il database e posso far si di inserire con dovuta semplicità i campi, ma se devo "smanettare", lo devo fare a mano cercando "come oggi" le soluzioni.
    Concludo con i dovuti ringraziamenti e spero di poter compiere questa impresa nel migliore dei modi!

    Grazie a tutti

  15. #15
    Guest

    Predefinito

    Buonasera a tutti!
    Parto con i ringraziamenti DOVUTI per l'aiuto nonché per avermi spronato a scrivere e provare a creare del codice con il linguaggio PHP.
    Grazie all'utente "mzanella" per la pazienza e l'aiuto fornito!!! Un grazie all'utente "vplaza" che mi ha spronato nello scrivere e ricercare!

    le righe di codice "CERCATE e CREATE" stanno funzionando a dovere, ma come ovvio che sia, le problematiche legate all'inevitabile evolvere non finiscono qui...

    GRAZIE A TUTTI E A PRESTO

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •