Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    unione due queries in una sola

    ciao a tutti
    sono nuovo
    ho bisogno di un aiuto

    devo unire due queries in una sola

    eccole:

    la prima, selezione id max promemoria di tutti i contatti raggruppati, in modo tale da avere il contatto più recente

    SELECT Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE, Max(Promemoria.id_promemoria)
    FROM (Cb INNER JOIN Contatti_cb ON Cb.cf = Contatti_cb.cf) INNER JOIN Promemoria ON Contatti_cb.id_contatto = Promemoria.id_contatto_cb
    GROUP BY Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE;

    la seconda, parte da quella precedente precedetene (da contattare oggi step 1), guarda id max a quale data corrisponde e vede solo le date del giorno interessato (per comodità ho messo una data specifica che ovviamente andrò a modificare dopo il test)

    SELECT [da contattare oggi step 1].*, Promemoria.data
    FROM [da contattare oggi step 1] INNER JOIN Promemoria ON [da contattare oggi step 1].MaxDiid_promemoria = Promemoria.id_promemoria
    WHERE (((Promemoria.data)=#5/16/2012#));

    grazie a tutti....

  2. #2
    provo, anche se con i nomi delle tabelle e dei campi sono andato un po' in confusione:

    SELECT Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE, Max(Promemoria.id_promemoria)
    FROM (Cb INNER JOIN Contatti_cb ON Cb.cf = Contatti_cb.cf) INNER JOIN Promemoria ON Contatti_cb.id_contatto = Promemoria.id_contatto_cb
    INNER JOIN [da contattare oggi step 1] on Promemoria.id_promemoria
    = [da contattare oggi step 1].MaxDiid_promemoria
    GROUP BY Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE;


    se promemoria non contiene record univoci per id_promemoria penso che esce un dato sballato...

  3. #3
    grazie per l aiuto
    ma nn va

  4. #4
    Utente di HTML.it L'avatar di nman
    Registrato dal
    Jan 2011
    residenza
    Milano
    Messaggi
    1,333
    Non hai usato nessuna regola di normalizzazione per
    attribuire i nomi delle tabelle e campi.


    Questo pur non essendo tecnicamente sbagliato
    rende quasi illegibili ( per gli umani ) le Viste.



    Poi hai chiamato una vista
    "da contattare oggi step 1"
    lasciando gli spazi nel nome che ti costringe poi
    a racchiuderla fra parentesi quadre !!!!


    Tieni presente che il motore del DB ( qualunque DB )
    deve leggere quei nomi e in caso di nomi incasinati
    fà piu fatica




    __________________________________________________ ____________



    Tornando alla tua domanda in linea molto generale

    se hai una prima vista di nome V01
    codice:
    SELECT 
       Nm.NmId, 
       Nm.NmCi, 
       Nm.NmNom, 
       Nm.NmCog
    FROM 
       Nm
    WHERE 
       (((Nm.NmCi)=2))
    ;

    Poi hai una seconda vista che fa riferimento a V01
    codice:
    SELECT 
       V01.NmId, 
       V01.NmCi, 
       V01.NmNom, 
       V01.NmCog, 
       Ci.Citta, 
       Ci.CiNote
    FROM 
       V01 
    INNER JOIN 
       Ci 
    ON 
       V01.NmCi = Ci.CiId
    ;


    Vuoi "compattare" le 2 viste in una unica

    al posto di:
    codice:
    ......
    FROM 
       V01 
    ......

    ci metti:
    codice:
    ...............
    FROM
       (
       ........
       Il testo integrale di V01 ( senza ; finale )
       ......
       ) AS V01
    ..............



    __________________________________________________ ________


    Prima pero devi perfezionare la tua vista "da contattare oggi step 1"

    scrivendo esplicitamente il nome del 4° campo

    ....
    ....
    Max(Promemoria.id_promemoria) AS MaxDiid_promemoria
    ...
    .......





    Facci sapere se non riesci a risolvere


  5. #5
    mille grazie
    funziona

    ecco il risultato

    SELECT da_contattare_oggi_step_1.*, Promemoria.data
    FROM (SELECT Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE, Max(Promemoria.id_promemoria) AS MaxDiid_promemoria
    FROM (Cb INNER JOIN Contatti_cb ON Cb.cf = Contatti_cb.cf) INNER JOIN Promemoria ON Contatti_cb.id_contatto = Promemoria.id_contatto_cb
    GROUP BY Contatti_cb.CF, Cb.RAG_SOC_CLI, Cb.PARTNER_RISULTANTE) AS da_contattare_oggi_step_1 INNER JOIN Promemoria ON da_contattare_oggi_step_1.MaxDiid_promemoria = Promemoria.id_promemoria
    WHERE (((Promemoria.data)=#5/16/2012#));

    finalmente ho capito come concatenare 2 queries in una unica

    grazie ancora

  6. #6
    Ciao,

    come da regolamento, va indicato nel titolo il database altrimenti non si capisce di che si parla e non tutti possono aiutarti così come chi fa le ricerche sul forum non troverà di alcuna utilità il tuo thread ... quando magari invece poteva risolvere subito il suo problema!

    Potresti postare qua o mandarmi un PVT il nome del database? Dalle query mi sembra Access o MSSQL.
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  7. #7
    testo su access per essere piu veloce e poi porto su mssql

    il nome del db e': customer_base

    il nome del problema cmq l'ho inserito nel titolo

    dimmi se ti serve altro

    grazie

  8. #8
    Originariamente inviato da Sir Cris
    testo su access per essere piu veloce e poi porto su mssql

    il nome del db e': customer_base

    il nome del problema cmq l'ho inserito nel titolo

    dimmi se ti serve altro

    grazie
    bastava la prima info, comunque grazie
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

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.