Principale utente con più risposte
Query da più tabelle

Domanda
-
Buongiorno a tutti...Premetto che sono un semiprincipiante per quanto riguarda mysql, nel senso che ho un po' di dimestichezza ma con le cose più sempliceHo un problema con una query un po complessa ovvero devo estrapolate dei dati da 4 tabelle.Mi spiego meglio:Ho una tabella clienti, con relativi dati dei miei clienti;Ho una tabella macchine, con relativi dati della macchina e una chiave esterna che indica di chi è la macchina(id_cliente per intenderci) ;Ho una tabella utente, con relativi dati degli utenti che utilizzano le macchine;Infine ho una tabella operazioni, dove all'interno ho :Id_operazioneData operazioneMateriale inseritoId_utenteId_macchinaIo devo recuperare la lista di tutti gli utenti che hanno generato delle operazioni, numero di tutte le operazioni fatte e la somma del materiale inserito Totale di tutte le operazioni fatte, il tutto relativamente alle macchine possedute da un cliente e in determinato lasso di tempo.Riesco a recuperare la lista degli utenti, riesco a recuperare la lista delle operazioni e riesco a recuperare la somma, ma tutto separatamente. Come posso fare ad avere una query che mi restituisca il tutto?!Grazie a tutti quelli che mi sapranno dare una mano visto che sto impazzendo da giorni.
Risposte
-
in ciascuna tabella devi avere un campo chiave che permetta di agganciarsi alle altre tabelle e poi devi costruire una select su tutte l tabelle contemporaneamente usando degli inner join utilizzando i campi chiave per l'aggancio.
qui sotto trovi l'esempio
https://www.w3schools.com/sql/sql_join_inner.asp
Edoardo Benussi
e[dot]benussi[at]gmx[dot]com- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 21 marzo 2022 11:11
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator martedì 22 marzo 2022 08:03
-
RISOLTO !!!
Dalla query sopra ho tolto DISTINCT e ho aggiunto GROUP BY utente.codice_fiscale e ho risolto!!
Grazie del suggerimento con il link mi è stato veramente molto utile!!!
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator martedì 22 marzo 2022 08:03
Tutte le risposte
-
in ciascuna tabella devi avere un campo chiave che permetta di agganciarsi alle altre tabelle e poi devi costruire una select su tutte l tabelle contemporaneamente usando degli inner join utilizzando i campi chiave per l'aggancio.
qui sotto trovi l'esempio
https://www.w3schools.com/sql/sql_join_inner.asp
Edoardo Benussi
e[dot]benussi[at]gmx[dot]com- Proposto come risposta Edoardo BenussiMVP, Moderator lunedì 21 marzo 2022 11:11
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator martedì 22 marzo 2022 08:03
-
Grazie della risposta,
ho provato a fare la query con INNER JOIN annidati e questo funziona, il problema è che ottengo molti record, mi spiego meglio :
Dalla tabella Utente voglio recuperare il codice fiscale relativo all'utente che esegue delle operazioni, in un lasso di tempo sulle macchine possedute da un cliente, di questo utente infine voglio sapere quante operazioni ha fatto e la somma del materiale inserito.
Ho provato con questa query :
SELECT DISTINCT(utente.codice_Fiscale_Utente), operazione.id_Operazione, operazione.quantita_Materiale_Operazione FROM (((operazione INNER JOIN utente ON operazione.Utente = utente.id_Utente) INNER JOIN ekomacchina ON operazione.EkoMacchina = ekomacchina.id_EkoMacchina) INNER JOIN cliente ON ekomacchina.Cliente = cliente.id_Cliente) WHERE cliente.id_Cliente = '1' AND operazione.data_Operazione BETWEEN DATE('2022/03/01') AND DATE('2022/03/31')
se eseguo questa query ottengo la lista di tutti gli utenti che hanno eseguito operazioni sulle macchine del cliente 1 nel lasso di tempo, però pur avendo DISTINCT l'utente si ripete più volte.
Ho provato anche ad inserire COUNT sull'operazione e SUM sul materiale raccolto, cosi facendo ottengo un solo risultato e mi scarta tutti gli altri, nel campo codice fiscale mi mette il primo codice fiscale trovato, nel campo idOperazione mi mette la somma delle righe delle operazioni (corrette ma di tutti gli utenti che hanno conferito) e nella colonna materiale raccolto come sopra la somma corretta ma relativa a tutti gli utenti che hanno conferito
Spero di essermi spiegato bene.
-
RISOLTO !!!
Dalla query sopra ho tolto DISTINCT e ho aggiunto GROUP BY utente.codice_fiscale e ho risolto!!
Grazie del suggerimento con il link mi è stato veramente molto utile!!!
- Contrassegnato come risposta Edoardo BenussiMVP, Moderator martedì 22 marzo 2022 08:03