Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Query su due tabelle

  1. #1

    Query su due tabelle

    Premessa : uso Access
    Ho due tabelle con dati diversi tranne per che una chiave ( id_denuncia)( nella prima tabella è una chiave primaria , nella seconda è una foregn key non univoca).Mentre sulla prima tabella il campo Id_denuncia risulta univoco sull'altra si ripete più volte ( sono delle fatture presentate).
    Allora, dovrei fare una Select di tutti i campi della prima tabella , una select di tutti i campi della seconda tabella, la somma delle fatture dove il campo Id_denuncia della seconda tabella si ripete , mettere tutto insieme per fare un'area ripetuta tipo:
    (ometto di mettere tutti i campi)

    ID_DENUNCIA(prima tabella),somma fatture seconda tabella con Id_denuncia uguale a quello della prima tabella.
    ( questo forse è semplice) ma vorrei che si visualizzassero comunque tutti i record della prima tabella anche quelli non legati alla seconda con delle fatture.

    Per la select della seconda tabella ho fatto:
    SELECT Id_denuncia, SUM(importo_liq) AS TOTALE
    FROM rimborso_spese GROUP BY Id_denuncia

    per la prima semplicemente:
    SELECT *
    FROM reg_denuncia

    Come fare per unirle e fare in modo che nell'area ripetuta sulla stessa riga ci sia L'id_denuncia della prima tabella , tutti gli altri campi e il totale delle fattura ( seconda tabella) nella quale l'id_denuncia è uguale e fare comparire comunque anche tutti gli altri record della prima tabella.

    Spero di non aver fatto troppa confusione .


    Grazie Maurizio

  2. #2
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    qui trovi tutto lo scibile su query e più tabelle:

    http://forum.html.it/forum/search.ph...by=&sortorder=

  3. #3
    codice:
    select reg_denuncia.*, rimborso_spese.* from reg_denuncia inner join rimborso_spese on reg_denuncia.Id_denuncia = rimborso_spese.id_denuncia

  4. #4
    Grazie, soprattutto per la velocità!

    Allora:

    con:
    select reg_denuncia.*, rimborso_spese.* from reg_denuncia inner join rimborso_spese on reg_denuncia.ID = rimborso_spese.id_denuncia

    Ho fatto una sola correzione perchè nella prima tabella il campo si chiama ID e non Id_denuncia.

    Ottengo però solo i record che hanno in comune I DUE CAMPI ( ID E ID_DENUNCIA) nelle due tabelle mentre io voglio comunque tutto l'elenco della prima tabella ,la somma delle fatture (importo_liq) della seconda tabella dove l'id_denuncia è si ripete:

    faccio un esempio pratico

    Prima tabella
    ID Nome Cognome
    1 a b
    2 b c
    3 a b
    4 a b

    Seconda tabella

    Id_denuncia importo
    1 200
    1 100
    2 50
    2 50
    4 30

    Nell'area ripetuta vorrei:

    ID Nome Cognome importo
    1 a b 300
    2 b c 100
    3 a b
    4 a b 30

    Spero di essere stato più chiaro.

    Grazie Maurizio

  5. #5
    Scusate per come si è formattato l'esempio , comunque ogni dato corrisponde alla sua colonna.

    Grazie

  6. #6
    Utente di HTML.it L'avatar di Corwin
    Registrato dal
    Jan 2002
    Messaggi
    584
    SELECT REG_DENUNCIA.ID, REG_DENUNCIA.NOME, REG_DENUNCIA.COGNOME, Sum(RIMBORSO_SPESE.IMPORTO) AS TOT_IMPORTO
    FROM REG_DENUNCIA LEFT JOIN RIMBORSO_SPESE ON REG_DENUNCIA.ID = RIMBORSO_SPESE.ID_DENUNCIA
    GROUP BY REG_DENUNCIA.ID, REG_DENUNCIA.NOME, REG_DENUNCIA.COGNOME;
    I don't wanna have to shout it out / I don't want my hair to fall out
    I don't wanna be filled with doubt / I don't wanna be a good boy scout
    I don't wanna have to learn to count / I don't wanna have the biggest amount
    I don't wanna grow up

  7. #7
    uhm, allora l'unica soluzione che vedo è:

    1) fare la prima query e ottenere tutti i records

    2) fare un ciclo per tutti gli Id del primo record

    3) all'interno del ciclo eseguire la seconda query filtrando per l'id corrente del ciclo. se è vuota stampo solo l'id della prima query, altrimenti faccio la somma degli importi

    4) richiudo il secondo recordset

    5) passo all'id successivo e torno al punto 3

    se non è chiaro ti faccio un esempio di codice

  8. #8
    dimentica quello che ho scritto se la query di Corwin funge

  9. #9
    Sì, la stringa di Corwin è esatta, comunque ringrazio tutti per l'interesse e la pazienza e mi prenoto per le prossime domande.

    grazie

    Maurizio Lecce

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.