Join di 3 tabelle con raggruppamento

di Scolaretto il
9 risposte

Vi scrivo per un problema relativo ad una query da eseguire su tre tabelle diverse collegate fra loro da una chiave e con join uno a N. Con l'aiuto di Sihandrea sono riuscito a mettere insieme due tabella, ora vorrei fare la stessa cosa su  3 tabelle. Purtroppo le mie conoscenze di sql non mi permettono di capire se questa soluzione sia fattibile è quale sia la corretta sintassi dei comandi.

queste le  relazioni tra le tabelle

questo la query per 2 tabelle

SELECT Dos.IdInvesti, acq.IdInvesti, acq.Data
FROM 
(SELECT D_DossierTitoli.IdInvesti FROM D_DossierTitoli GROUP BY D_DossierTitoli.IdInvesti)  
AS Dos LEFT JOIN 
(SELECT D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data FROM D_MovimentiAcq GROUP BY D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data) 
AS acq ON Dos.IDInvesti = acq.IDInvesti;

Grazie a tutti

9 Risposte

  • Credo di essermi  spiegato male con due tabelle mi funziona, quello che non riesco a fare è proprio la doppia left join.

  • A parte che è scritta...

    Fammi vedere come fai con due tabelle.

  • Questa la query

    SELECT Dos.IdInvesti, acq.IdInvesti, acq.Data
    FROM 
    (SELECT D_DossierTitoli.IdInvesti FROM D_DossierTitoli GROUP BY D_DossierTitoli.IdInvesti)  
    AS Dos LEFT JOIN 
    (SELECT D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data FROM D_MovimentiAcq GROUP BY D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data) 
    AS acq ON Dos.IDInvesti = acq.IDInvesti;
  • Ciao, 
    Attenzione a nidificare le Left Join ... è argomento trattato anche in questi ultimi Thread di giornata....

    Alle volte un approccio più semplice e logico, risolve agevolmente e con ottime performance qualsiasi tipo di Sql command.

  • Ringrazio tutti sono riuscito a fare il link su due tre tabelle il problema era due  virgole , ho ancora qualche problema ma ci lavoro sopra e poi eventualmente chiedo aiuto.

    Grazie di nuovo a tutti

    se dovesse servire ad altri questa la soluzione

    SELECT Acq.idinvesti, dos.IdInvesti, ven.IDInvesti
    FROM ((SELECT D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data FROM D_MovimentiAcq GROUP BY D_MovimentiAcq.IDInvesti, D_MovimentiAcq.Data)  AS Acq LEFT JOIN (SELECT D_DossierTitoli.IdInvesti FROM D_DossierTitoli GROUP BY D_DossierTitoli.IdInvesti)  AS dos ON Acq.IDInvesti = dos.IDInvesti) LEFT JOIN (SELECT D_Movimentiven.IDInvesti, D_Movimentiven.Data FROM D_Movimentiven GROUP BY D_Movimentiven.IDInvesti, D_Movimentiven.Data)  AS ven ON Acq.IDInvesti = ven.IDInvesti;
    
Devi accedere o registrarti per scrivere nel forum
9 risposte