Query su tre tabelle:problemi con i join

di il
4 risposte

Query su tre tabelle:problemi con i join

Salve gente, sono un nuovo iscritto al forum e colgo l'occasione per rivolgere un saluto a tutti.

Sto sviluppando un piccolo programma di contabilità condominiale in Visual Basic 6. Il programma è in grado di gestire + condomini. In un database creato con Microsoft Access2003 vado ad inserire i dati relativi alle entrate ed alle uscite dei condominii.Ho creato 3 Tabelle: "Condominii" dove ci sono i dati anagrafici dei condominii, "Entrate" dove sono presenti i dati relativi alle entrate dei condominii e "Uscite" dove sono presenti le uscite dei condominii. La chiave primaria della tabella Condominii è ID_Condomninio. Per le tabelle Entrate ed Uscite Uso la stessa chiave come esterna per legare ogni singola operazione ad un condominio specifico.
Mi trovo ora a voler effettuare un saldo dei movimenti di cassa di tutti i condominii in un determinato intervallo di tempo.
Inizialmente avevo implementato la seguente query SQL:

SELECT Condominii.Denominazione,SUM(Entrate.Totale)as Tot_Entrate,SUM(Uscite.Spesa) as Tot_Uscite,Tot_Entrate-Tot_Uscite as Saldo

FROM (Condominii INNER JOIN Entrate ON Condominii.ID_Condominio=Entrate.ID_Condominio)INNER JOIN Uscite ON Condominii.ID_Condominio=Uscite.ID_Condominio
GROUP BY Condominii.Denominazione
WHERE (Entrate.Data BETWEEN ? AND ?) AND (Uscite.Data BETWEEN ? AND ?)

La seguente query però non funziona se le tabelle Entrate Uscite hanno numeri di record differenti per ogni singolo condominio
ovvero se per il condominio A ho 3 entrate e 2 Uscite effettua la somma delle tre entrate e poi delle 2 uscite+ la primauscita.Ho provato anche ad utilizzare la relazione di LEFT JOIN ma senza buoni risultati.

Come posso risolvere il mio problema?
Vi ringrazio anticipatamente!

4 Risposte

  • Re: Query su tre tabelle:problemi con i join

    Salve gente sono riuscito a risolvere il mio problema.

    Ho creato una sottoquery di unione per selezionare tutte le entrate e tutte le uscite sotto un'unica voce, poi ne ho fatto la somma.
    Vi posto il codice!

    <center>
    SELECT Condominii.Denominazione ,SUM(Unione.Operazioni)AS Saldo
    FROM ( (SELECT ID_Condominio,Totale AS Operazioni ,Data
    FROM Entrate
    UNION
    SELECT ID_Condominio,- Spesa as Operazioni,Data
    FROM USCITE)AS Unione INNER JOIN Condominii ON Condominii.ID_Condominio=Unione.ID_Condominio )
    WHERE Unione.Data BETWEEN ? AND ?
    GROUP BY Condominii.Denominazione
    </center>

    I campi Totale e Spesa si riferiscono alle singole operazioni registrate sulle tabelle Entrate ed Uscite.
    Il campo Spesa è unito con il segno - perchè l'operazione da fare è Entrate-Uscite ovvero il saldo!
    Il risultato viene raggruppato in base al nome dei condominii(Entrate.Denominazione) .
    Le tre tabelle e anche quella creata dall'unione sono legate tra loro dalla chiave ID_Condominio

    Spero possa essre utile ad altri!
    Buona Programmazione a tutti
  • Re: Query su tre tabelle:problemi con i join

    Interessante, iniziai a lavorare, su richiesta di un architetto, ad un programma di condomini con Access2000 poi sospesi tutto perché il poveretto dovette accudire la moglie ammalata e lasciò gli incarichi di amministratore.
    Lo stai sviluppando "per te stesso" o stai facendo qualcosa da offrire? Se ritrovo dove ho messo il CD ti faccio avere i miei mdb.

    Chip
  • Re: Query su tre tabelle:problemi con i join

    Ho sviluppato su richiesta.
    Ti ringrazio molto per l'interessamento, purtroppo ora sono impegnato nello studio e ho messo un attimo da parte la piccola applicazione.
    Per l'esattezza devo ancora implementare il sistema dei report dettagliati.
    Appena avanzo nei progressi vi aggiornerò.
    Mi piacerebbe fornire una applicazione modulare che con piccole modifiche si adatti alle esigenze di svariati utilizzatori.

    Buona Programmazione a tutti!
  • Re: Query su tre tabelle:problemi con i join

    Ciao,
    scusami se ti disturbo con questo mio msg.
    In pratica cerco di risolvere un mio problema sulle query, cercando soluzioni tra i vari post.
    Ho realizzato una query (in sql) dove, tra i vari campi, se ne trova uno chiamato "somma" ; adesso vorrei prendere un campo chiamato somma1 che si trova in un'altra query chiamata per esempio "queryA" ed inserirla nell'altra in modo da avere i campi somma e somma1; infine fare il totale di questi e due campi.
    Potresti darmi un aiuto sul linguaggio sql da usare per effettuare questo inserimento? (ammesso che si possa fare).

    Ti ringrazio
    ciao
    saverio
Devi accedere o registrarti per scrivere nel forum
4 risposte