Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    25

    [SQL Server] sui cicli nidificati (un po' da inesperta...)

    Buongiorno a tutti,
    ho un problema legato alla gestione di più cicli annidati.
    Provo a schematizzare riferendomi ad una struttura dati tipo regione/provincia/città; i miei dati in realtà sono divesi ma il concetto è lo stresso.
    Supponiamo di stampare tutto su pagina web in modo che si capisca la gerarchia degli elementi quindi per ciascuna regione avrò le province (shiftate a destra) e per ciascuna provincia le sue città (ancora più shiftate) secondo uno schema sotto riportato
    regione1
    ---provincia1 di regione1
    ------citta1 di provincia1
    ------citta2 di provincia1
    ------(...)
    ---provincia2 di regione1
    ...

    Fino a oggi gestisco la situazione con cicli nidificati in asp classic (lo so, sono un po' arretrata ma non riesco ad aggiornarmi e passare al mondo .NET ) su SQL server 2008.
    I miei passaggi:
    1. eseguo stored procedure per trovare le regioni
    2. per ogni chiave primaria di regione eseguo altra stored procedure per trovare le sue province
    3. per ogni chiave primaria di provincia eseguo altra stored procedure per trovare le città correlate
    Organizzo tutto con un po' di html per formattare e funziona... ma la pagina inizia ad essere troppo lenta da caricare.

    Esiste una soluzione lato sql server quindi spostando l'elaborazione in un'unica stored procedure? Non riesco a capire poi come potrei organizzare il set di dati ordinato gerarchicamente ma un passo alla volta.
    Grazie per l'aiuto!

    Mara
    Ultima modifica di _Mara_; 18-04-2018 a 21:07

  2. #2
    puoi anche senza pensare alle gerarchie: ti basta (lato ASP) controllare se un valore è ripetuto, nel qual caso semplicemente non lo stampi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    25
    Quote Originariamente inviata da optime Visualizza il messaggio
    ti basta (lato ASP) controllare se un valore è ripetuto, nel qual caso semplicemente non lo stampi
    Allora ho sbagliato approccio annidando cicli su cicli ... Questa tua soluzione aumenterebbe i tempi di risposta del server? Riesci a farmi un esempio?

    Il mio attuale metodo:
    codice:
    '--inizio 1^ ciclo
    set rs1=conn.Execute("exec  prima_stored_procedure“)  
               With (Response)
                 While rs1.EOF = False
                 
                    '--inizio 2^ ciclo
                        set rs2=conn.Execute("exec  seconda_stored_procedure“ + parametro_della_prima)  
                                   With (Response)
                                     While rs2.EOF = False
                                            
                                  '--inizio 3^ ciclo
                                    ....
                                  '--fine 3^ ciclo
    
                          Rs2.MoveNext
                         Wend
                        End With
                    '--fine 2^ ciclo
    
      Rs1.MoveNext
     Wend
    End With
    '--fine 1^ ciclo
    Grazie!

    Mara
    Ultima modifica di _Mara_; 19-04-2018 a 10:39

  4. #4
    faccio un esempio con Clienti e Fatture

    SELECT C.RagioneSociale, F.DataFattura, F.NumeroFattura FROM Clienti C INNER JOIN Fatture ON C.IdCliente=F.IdCliente

    se tu vuoi

    Rossi
    ft.1 del 10.10.10
    ft.44 del 11.11.11
    Verdi
    ft.5 del 11.11.10
    ft.9 del 12.12.12

    Se quello che vuoi ottenere è questo, nel tuo ciclo ti sarà sufficiente stampare C.RagioneSociale quando varia (devi avere in memoria una variabile "Cliente" di appoggio). Però è più materia di ASP che di database

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2014
    Messaggi
    25
    Quote Originariamente inviata da optime Visualizza il messaggio
    Per� � pi� materia di ASP che di database
    E' vero scusate... vi stavo portando verso un altro argomento.

    Mara

  6. #6
    fatti spostare la discussione da un moderatore

Tag per questa discussione

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 © 2024 vBulletin Solutions, Inc. All rights reserved.