Capire una query....

di il
12 risposte

Capire una query....

Ciao,
purtroppo sono niubbo di SQL Sever ma volevo iniziare capendo una query che volevo modificare.
Questa query estrae dei campi per comporre un' anagrafica :

Inizia con :

SET NOCOUNT ON

SELECT Id_Cli
INTO #tmpNotValid
FROM Dettaglio_Prenot
WHERE Log_State = 'V' AND Id_Cli is Not Null
GROUP BY Id_Cli
HAVING CASE WHEN Count(Id_cli) > SUM(CASE WHEN NumCam-NumCamAss >0 THEN 1 ELSE 0 END) THEN 1 ELSE 0 END=0

SET NOCOUNT OFF

cosa vogliono dire queste istruzioni ?

SET NOCOUNT ON
SELECT Id_Cli : seleziona il valore contenuto nel campo id_Cli
FROM Dettaglio_Prenot : dalla tabella Dettaglio_Prenot
WHERE Log_State = 'V' AND Id_Cli is Not Null : dove il campo Log_State sia uguale al carattere V ed il campo id_Cli non sia vuoto
GROUP BY Id_Cli : raggruppa per il campo id_Cli ( cosa vuol dire raggruppa ? )
HAVING CASE WHEN Count(Id_cli) > SUM(CASE WHEN NumCam-NumCamAss >0 THEN 1 ELSE 0 END) THEN 1 ELSE 0 END=0 : HAVING CASE cosa fa? poi, mi sembra che verifichi che esista un valore maggiore di 0 sui campi NumCam-NumCamAss ?

grazie e scusate l' imbra..

12 Risposte

  • Re: Capire una query....

    In che senso "cosa vuol dire ""raggruppa"" "??

    Sai che cosa e' L'SQL e che cosa e' l'algebra relazionale?

    Ti conviene spulciare un BEL po' di wikipedia!
  • Re: Capire una query....

    Sto iniziando con SQL, speravo in un aiuto per iniziare a capire ....

    grazie, cmq
  • Re: Capire una query....

    Su w3school trovi un corso di base di sql con esempi e possibilità di provarli.
  • Re: Capire una query....

    Renditi conto che se stai iniziando non ti basta un aiuto su una domanda in un forum. Ti servono corsi, libri intanto tempo.
  • Re: Capire una query....

    Ok ma l' esperienza mi dice che se affronto e risolvo dei problemi reali imparo prima..

    cmq grazie lo stesso
  • Re: Capire una query....

    No, risolvi solo il tuo problema specifico e limitato ma non impari quasi nulla.
  • Re: Capire una query....

    Piuttosto, ad esempio per il SET NOCOUNT, comincia a documentarti

    https://docs.microsoft.com/it-it/sql/t-sql/statements/set-nocount-transact-sql?view=sql-server-ver15
  • Re: Capire una query....

    Ok, credo di aver capito questo :
    E un'istruzione set che impedisce il messaggio che mostra il numero di righe interessate dalle istruzioni della query.

    Quindi impedisce la visualizzazione di un messaggio che scaturirebbe dalle istruzioni sottostanti, cioe' :

    SELECT Id_Cli
    INTO #tmpNotValid
    FROM Dettaglio_Prenot
    WHERE Log_State = 'V' AND Id_Cli is Not Null
    GROUP BY Id_Cli
    HAVING CASE WHEN Count(Id_cli) > SUM(CASE WHEN NumCam-NumCamAss >0 THEN 1 ELSE 0 END) THEN 1 ELSE 0 END=0

    SET NOCOUNT OFF

    mentre l' istruzione SET NOCOUNT OFF riabilita la visualizzazione dei messaggi ? Ma sono messaggi che appaiono a video ?

    Grazie 1000
  • Re: Capire una query....

    No, si parla di "invio di messaggi DONE_IN_PROC al client", è poi il client che ci fa quello che vuole ma "può determinare un incremento delle prestazioni significativo grazie alla notevole riduzione del traffico di rete".

    Vedi ... questa è una delle tante gocce del mare ... non puoi pensare di studiarle in un forum perché non è compito dei partecipanti del forum farti da docente e un thread non può diventare un "corso" in cui si parla di tutto. Ecco perché ti dicevamo che la questione esula dal compito del forum e devi studiare, con tanto tempo e pazienza, sui libri, da solo o con dei docenti.
  • Re: Capire una query....

    Ah, il client sarebbe quello che si e' loggato ed ha lanciato la query ?
    Quindi serve per ridurre il traffico in rete prevedendo che il client sia in rete, diciamo che senza questa istruzione e la seguente SET NOCOUNT OFF l' istruzione funzionerebbe lo stesso ?
    Ad esempio, se la lancio dal server in cui sta l' SQL non ha, praticamente, nessun effetto ?

    Grazie
  • Re: Capire una query....

    Sì, il client è il programma che è collegato e lancia la query, ottenendo una risposta dal server (anche queste sono basi da avere più che chiare).

    Anche se lanciata nel "server" il programma che la esegue, in quel momento, fa da client. Anche se il colloquio non avviene in rete, verrà comunque ridotto, se necessario.

    Ripeto ... lascia stare la prima SET ... è solo una prima cosa tra le migliaia che dovresti studiare di SQL (per SQL Server, T-SQL). Ti serve un libro e tanto tempo, oltre che una "organizzazione" nello studio.
  • Re: Capire una query....

    Ok, bene

    grazie 1000 x l' aiuto....
Devi accedere o registrarti per scrivere nel forum
12 risposte