Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: Annidamento query

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    488

    Annidamento query

    Salve a tutti, qualcuno saprebbe dirmi come sistemare il seguente codice per evitare la ripetizione di uno stesso utente per ogni commento inserito?

    Il database è così composto :
    Tabella Utenti (IdUtente, Nome)
    Tabella Commenti (IdComm, Data, Commento, IdUtente)

    Ringrazio anticipatamente chiunque decida di aiutarmi.

    <html>
    <head>
    <title>pagina 1</title>
    </head>
    <body>
    <%
    Set objConn = Server.CreateObject("ADODB.Connection")
    objConn.Open("Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\......Commenti_Utenti_Sito.mdb")
    Set objRs = Server.CreateObject("ADODB.Recordset")
    set objRs = objConn.Execute("SELECT DISTINCT Utenti.IDUtente, Nome, Data, Commento FROM Utenti RIGHT JOIN Commenti ON Utenti.IDUtente = Commenti.IDUtente;")
    Do while NOT objRs.EOF
    response.write "<ul style=list-style:none>"&"[*]"&objRs("IDUtente")
    response.write objRs("Nome")
    response.write "<ul style=list-style:none>"&"[*]"&objRs("Data")
    response.write objRs("Commento")&""&"[/list]"&""&"[/list]"
    response.write "<hr size='1' color='midnightbluè width='40%' align='left'>"
    objRs.Movenext
    Loop
    objRs.Close
    Set objRs = Nothing
    objConn.Close
    Set objConn = Nothing
    %>
    </body>
    </html>

  2. #2
    Quel DISTINCT messo li non ti da errore?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    488
    No perchè a te si?

  4. #4
    Originariamente inviato da Prof_Mauri
    No perchè a te si?
    Chiedevo. Non l'ho manco provato il codice.
    Comunque, se vuoi scrivere una sola volta il nome dell'utente, usa una variabile di appoggio dove memorizzare il nome dell'utente. Fai quindi un controllo se nella variabile ci sta già il nome del ciclo precedente e quindi non lo scrivi (perchè l'hai scritto nel ciclo precedente). Se il nome è diverso lo memorizzi nella variabile d'appoggio e lo scrivi nella pagina...

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    488
    Cioè? ti sarei grato se facessi degli esempi, purtroppo è veramente da poco che provo a lavorare con asp e faccio grosse difficoltà a seguirti teoricamente, sono sicuro che puoi comprendermi.

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    488
    Per quel che riguarda la mia richiesta iniziale invece? hai qualche suggerimento da darmi?

  7. #7
    codice:
    tempNome = ""
    Do while NOT objRs.EOF
    response.write "<ul style=list-style:none>"
    if objRs("Nome") <> tempNome then
    response.write "[*]" & objRs("IDUtente") & " " & objRs("Nome")
    else
    tempNome = objRs("Nome")
    end if
    response.write "<ul style=list-style:none>"&"[*]"&objRs("Data")
    response.write objRs("Commento")&""&"[/list]"&""&"[/list]"
    response.write "<hr size='1' color='midnightbluè width='40%' align='left'>"
    objRs.Movenext
    Loop

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    488
    Si, ok, ma l'hai provato?
    hai visto che si ripetono gli stessi utenti tante volte per quanti sono i commenti inseriti?!?
    Mi sembra una cosa assurda!!!
    perciò se un utente inserisce 100 commenti lo vedrò ripetuto 100 volte!?!
    Non ci voglio credere che non si possa ovviare a questa assurdità? ci riesce access con i report e non si può fare con asp!
    Qualcuno venga presto in ns. aiuto!!!!!!!!!!!!!!!

  9. #9
    No. Non l'ho provato.

  10. #10
    Originariamente inviato da Prof_Mauri
    Si, ok, ma l'hai provato?
    hai visto che si ripetono gli stessi utenti tante volte per quanti sono i commenti inseriti?!?
    Mi sembra una cosa assurda!!!
    perciò se un utente inserisce 100 commenti lo vedrò ripetuto 100 volte!?!
    Non ci voglio credere che non si possa ovviare a questa assurdità? ci riesce access con i report e non si può fare con asp!
    Qualcuno venga presto in ns. aiuto!!!!!!!!!!!!!!!
    codice:
    SELECT DISTINCT Utenti.IDUtente, Nome, Data, Commento FROM Utenti RIGHT JOIN Commenti ON Utenti.IDUtente = Commenti.IDUtente;
    Attento nell'uso della DISTINCT, il nome è ingannevole. Serve per evitare duplicati nell'intero risultato <IDUtente, Nome, Data, Commento>, ma non puoi specificare di "distinguere" il solo IDUtente.
    Anche io mi associo per la soluzione proposta da Domenix, ma prima devi ordinare la query per l'IDUtente ed effettuare il confronto sempre con l'IDUtente.

    Ciau!
    - Atari

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.