Query differenza tra tabelle

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buongiorno a tutti, volevo chiedervi aiuto per una piccola query che devo creare ma non riesco a venirne fuori, o meglio, vorrei trovare il metodo migliore per farla (e per imparare). In pratica ho due tabelle, ordini e produzioni. Nella tabella delle produzioni ci vado ad inserire i dati relativi alla produzione giornaliera, mentre su ordini, ad inizio mese imposto degli obiettivi di produzione, e vorrei che questo dato venisse aggiornato di volta in volta che apro la mia pagina Php.

Es.

Tab Ordini:

Cod. Particolare Tot. Pz

001 11500
002 10000
003 12000

Tab. Produzioni

Data cod particolare pz.prodotti
01-01-2023 001 200
01-01-2023 002 150
02-01-2023 001 150
02-01-2023 001 300

Spero si capisca, in pratica la query dovrebbe leggere gli ordini impostati e cercare (sommare) nella produzione tutti i pz.prodotti relativi a quel codice del mese in corso. Nell'esempio dovrebbe venire fuori che del cod 001 mancano (11500-200-150-300) e del codice 002 mancano (10000-150).

Potrei incasinarmi con variabili,cicli e Php, ma sono certo che esiste un modo piu corretto e lineare utilizzando Mysql.
Sapete darmi una mano please?

Grazie a tutti e buona domenica
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Buonasera a tutti, scusate il disturbo, volevo solo aggiornarvi... dopo varie prove sono riuscito a tirare fuori qualcosa di utile, ma magari se date uno sguardo ditemi se ci sono soluzioni migliori:

SQL:
SELECT     codice_lavorazione,
            SUM(n_pz_ok)  AS tot,
            ordini.pezzi_ordine AS ordine,
           (ordini.pezzi_ordine-SUM(n_pz_ok)) AS differenza,
            lavorazioni.cod_lavorazione
            
FROM riepoligo_lavorazioni

LEFT JOIN ordini ON ordini.id_lavorazione_ordine=riepoligo_lavorazioni.codice_lavorazione
LEFT JOIN lavorazioni ON lavorazioni.id_lavorazione=riepoligo_lavorazioni.codice_lavorazione

WHERE codice_lavorazione IN (SELECT id_lavorazione_ordine FROM ordini)

GROUP BY codice_lavorazione

Sembra funzionare, ma devo testarla per bene. Cosa ne pensate? è corretto?

Grazie a tutti
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Eccomi... buongiorno a tutti, la query come dicevo funziona, ma ho notato che se creo l'ordine e ho il rispettivo rapportino tutto funziona correttamente, ma se non ho alcun rapportino relativo a quel codice non vedo neppure l'ordine creato, invece mi servirebbe vederlo comunque. Continuerò con qualche test e vi aggiorno, nel frattempo se avete info...sono ben accette. Grazie mille
E
 

marino51

Utente Attivo
28 Feb 2013
3.204
207
63
Lombardia
vedi se ti garba questo codice
SQL:
select Cod_Particolare, sum(Tot_Pz) as Tot_Pz, sum(pz_prodotti) as pz_prodotti, sum(Tot_Pz)-sum(pz_prodotti) as pz_differenza
from (
  select Cod_Particolare,
         Tot_Pz,
         0 as pz_prodotti
  from ordini
  UNION ALL
  select Cod_Particolare,
         0 as Tot_Pz,
         pz_prodotti
  from produzioni
) tab
group by Cod_Particolare
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
vedi se ti garba questo codice
SQL:
select Cod_Particolare, sum(Tot_Pz) as Tot_Pz, sum(pz_prodotti) as pz_prodotti, sum(Tot_Pz)-sum(pz_prodotti) as pz_differenza
from (
  select Cod_Particolare,
         Tot_Pz,
         0 as pz_prodotti
  from ordini
  UNION ALL
  select Cod_Particolare,
         0 as Tot_Pz,
         pz_prodotti
  from produzioni
) tab
group by Cod_Particolare

Ciao Marino, farò ancora qualche prova ma non riesco a farlo girare. Ti riporto di seguito i campi "reali" delle tabelle, in modo che riesci a capire cosa non riesco a fare:

ordini
codice_ordine
id_lavorazione_ordine
pezzi_ordine


riepilogo_lavorazioni
data_lavorazione
codice_lavorazione
n_pz_ok

In pratica devo visualizzare tutti gli ordini, e per tutti gli ordini che trovano riscontro nella tabella riepilogo_lavorazioni (ordini.id_lavorazione_ordine=codice_lavorazione) devo calcolare quanti pezzi mancano per raggiungere l'ordine impostato "sum(riepilogo_lavorazioni.n_pz_ok)-ordini.pezzi_ordine"

Spero di essere stato un po più chiaro.
Il mio codice funzionava, ma visualizzava SOLO gli ordini che trovano riscontro nella tabella riepilogo_lavorazioni.

Grazie mille per l'interesse!
E
 

Emanuele85

Utente Attivo
30 Gen 2021
117
0
16
Marino questa sembra funzionare, sicuramente non è il massimo, non mette gli zeri nel caso in cui non c'è corrispondenza tra le due tabelle, ma al momento faccio fare questo lavoro a php. Se hai info utili...sono ben accette.
Di seguito il codice che sto utilizzando:

SQL:
SELECT     ordini.id_lavorazione_ordine,
            SUM(riepoligo_lavorazioni.n_pz_ok)  AS tot,
            ordini.pezzi_ordine AS ordine,
           (ordini.pezzi_ordine-SUM(n_pz_ok)) AS differenza,
            lavorazioni.cod_lavorazione
            
FROM ordini

LEFT JOIN riepoligo_lavorazioni ON ordini.id_lavorazione_ordine=riepoligo_lavorazioni.codice_lavorazione
LEFT JOIN lavorazioni ON lavorazioni.id_lavorazione=ordini.id_lavorazione_ordine

WHERE MONTH(ordini.data_inizio_ordine)=MONTH(NOW())

GROUP BY id_lavorazione_ordine

Grazie
E
 
Discussioni simili
Autore Titolo Forum Risposte Data
max75 query su due tabelle e dati doppioni MS Access 2
E Aiuto per query PHP 8
E Query Alias PHP 4
T Query con date MS Access 1
K Inserimento query Errore 1366 PHP 4
L Query e selezione DB con $_POST PHP 2
M query update e delete PHP 0
A media degli elementi estratti da una query MySQL 0
S Passare query o utm alla pagina successiva Domini 1
O problema con query PHP 4
M Query PHP 8
R query DELETE non cancella i record PHP 1
G Query con i giorni della settimana MySQL 10
E Query annidate o cicli MySQL 1
C bottone query MySQL 0
T Query su due tabelle con totali Database 4
G AVVISO QUERY IN ESECUZIONE PHP 1
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
S Selezionare ultimo record di una sotto query MySQL 27
G Menù a tendina di ricerca con query PHP 1
V Query per una somma PHP 2
F stampare a video i risultati della query PHP 1
L problema con query select PHP 2
D Query sum Database 1
M Visualizzazione a video risultati query php PHP 0
A form PHP prenotazione tramite query PHP 2
R Problema query con ricerca id numerico PHP 2
G Casella combinata in una query MS Access 4
R Aiuto con le query MS Access 2
Y query di DELETE PHP 4
V Query Oracle Oracle 0
L query somma PHP 8
W Query SQL Classic ASP 2
M Problemi con query a più tabelle PHP 3
Alex_70 Conteggio nella query PHP 0
elpirata Query per leggere dati da una tabella mysql e mostrarli a video in base a parametri passati tramite GET PHP 5
A nome file che contiene punto passato come parametro a query PHP 31
F query e form con select multipla PHP 17
M Problema su query JOIN in tre tabelle PHP 0
M Ordinare una query join PHP 2
Alex_70 Query ORDER BY PHP 18
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
Alex_70 foreach explode query PHP 3
O query con date in formato stringa PHP 3
Tommy03 Unione query di 4 tabelle MySQL 1
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
Alex_70 Query group actor e film PHP 26
TpD Incolonnare risultati query (mysql_result deprecato...) PHP 3
Tommy03 Query tra 3 tabelle MySQL 2

Discussioni simili