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

    [ASP, SQL query e paginazione] Query nidificate complesse

    Salve a tutti,

    ho la necessità di interrogare un database (in cui sono inseriti dati relativi alle Pagine e ai Menù di un portale) e ottenere un elenco così strutturato:

    - NOME MENU 1
    - Nome pagina 1.1
    - Nome pagina 1.2
    - Nome pagina 1.3

    - NOME MENU 2
    - Nome pagina 2.1
    - Nome pagina 2.2
    - Nome pagina 2.3
    - Nome pagina 2.4
    ecc....

    Per fare ciò uso le seguenti query:

    codice:
    <%
    SQLQuery = "SELECT * FROM Menu ORDER BY Horizontal ASC, Sort_Position_On_Page ASC"
    Set RS = DBConnection.Execute(SQLQuery)
    Do Until RS.EOF
    
    	SQLQuery2 = "SELECT * FROM Pagine WHERE ID_MENU = " & RS.Fields("ID_MENU") & " ORDER BY " & RS.Fields("Link_Sorting") & " " & RS.Fields("Link_Order")
    	Set RS2 = DBConnection.Execute(SQLQuery2) %>
    		<div id="m<% = RS.Fields("ID_MENU") %>"><% = RS.Fields("Title") %></div>
    		<ul class="elenco_ul"><%
    		Do Until RS2.EOF %>
    			<li id="p<% = RS2.Fields("ID_PAGE") %>"><% = RS2.Fields("Title") %><%
    			RS2.MoveNext
    		Loop %>
    		[/list]<%
    	RS2.Close
    	Set RS2 = Nothing
    
    	RS.MoveNext
    Loop
    RS.Close
    Set RS = Nothing
    %>
    Da notare che nella seconda query l'ordinamento ORDER BY è determinato dai valori di due campi ottenuti dalla prima query "Link_Sorting" e "Link_Order", nello specifico:

    Link_Sorting può assumere il valore ID_PAGE o Title o altro
    Link_Order può assumere il valore ASC o DESC

    Fin qui tutto ok e perfettamente funzionante.

    Ora ho la necessità di paginare l'elenco visualizzando -N righe alla volta.
    Di solito per fare ciò uso le proprietà dell'oggetto recordset (CacheSize, pageCount, pageSize), ma in questo caso, avendo due query nidificate, non posso a meno che non riduca le due query ad una sola mediante JOIN. Ma con una JOIN non posso specificare quell'ordinamento particolare di cui sopra...... o sì?
    C'è un modo per far intervenire all'interno della query il valore di un campo invece del nome (?!??).
    Oppure c'è un modo meno complicato per paginare l'elenco lasciando le due query invariate?

    So che è una situazione complicata ma spero che qualcuno di voi avrà la pazienza di capirmi e aiutarmi.


    Grazie anticipatamente,

    Ciao
    It's awfully considerate of you to think of me here
    And I'm much obliged to you for making it clear that I'm not here.

    ( Jugband Blues )

  2. #2

  3. #3
    Penso anch'io che la JOIN mi semplificherà la vita ma come la strutturo? Come effettuo quel particolare l'ordinamento che ho descritto su?

    Grazie per la collaborazione
    It's awfully considerate of you to think of me here
    And I'm much obliged to you for making it clear that I'm not here.

    ( Jugband Blues )

  4. #4
    Purtroppo non sono riuscito a trovare una soluzione al problema così ho dovuto stravolgere il tutto e rinunciare alla classica paginazione (peccato).

    Grazie lo stesso
    It's awfully considerate of you to think of me here
    And I'm much obliged to you for making it clear that I'm not here.

    ( Jugband Blues )

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.