Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396

    Dubbi su INNER JOIN e SELECT DISTINCT

    Ciao a tutti ragazzi,

    come da topic ho un piccolo dubbio sulla query descritta, ho due tabelle relazionate da un dato "id_categoria", quando vado ad eseguire la INNER JOIN i dati vengono stampati a schermo perfettamente, l'unico problema è che avrei bisogno di visualizzare una categoria sola per ogni forum, descrivo che è meglio:

    Codice PHP:
    [B]Categorie Generali[/B

     
    Caccia e Pesca

     Macchine

    [B]Categorie Specifiche[/B

     
    Banche e investimenti
     Finanza generale 
    Quello che ricevo a schermo è questo:

    Codice PHP:

    Categorie generali
    Caccia e Pesca    

    Categorie specifiche
    Banche e investimenti    

    Categorie specifiche
    Finanza generale 
    Ho creato questa query:

    Codice PHP:
    sql "SELECT DISTINCT (tbl_categorie.nome_categoria), tbl_forum.id_forum, tbl_forum.nome_forum, tbl_categorie.id_categoria FROM tbl_forum INNER JOIN tbl_categorie ON tbl_forum.id_categoria = tbl_categorie.id_categoria"
    Set rs Server.CreateObject("ADODB.Recordset")
    rs.Open sqlconn ,3,

    Do While Not rs.EOF

    %>
    <
    tr>
        <
    td colspan="3">---> <%=rs("nome_categoria")%></td>
    </
    tr>
    <
    tr>
        <
    td><%=rs("nome_forum")%></td>
        <
    td>0</td>
        <
    td>0</td>
    </
    tr>
    <%
    rs.Movenext
    Loop
    Conn
    .Close
    Set Conn 
    Nothing
    %> 
    Dove sbaglio?

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi usare una variabile d'appoggio che valorizzi con il nome della categoria che recuperi e visualizzi solo se la categoria cambia.

    Roby

  3. #3
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    esempino??

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    appocat = ""
    Do While Not rs.EOF 
    cat = rs("nome_categoria")
    if appocat <> cat then
    appocat = cat
    %> 
    <tr> 
        <td colspan="3">---> <%=cat%></td> 
    </tr>
    <%end if%>
    <tr> 
        <td><%=rs("nome_forum")%></td> 
        <td>0</td> 
        <td>0</td> 
    </tr> 
    <% 
    rs.Movenext 
    Loop
    Roby

  5. #5
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Ok, ora ho capito e così funziona. Grazie mille Roby!

  6. #6
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    Altro problemino:

    Nella pagina leggi_discussione.asp visualizzo i contenuti della tabella tbl_discussioni e tbl_risposte passando un id_descrizione attraverso una INNER JOIN:

    Codice PHP:
    <%
    Dim id_discussione
    id_discussione 
    Request.QueryString("id_discussione")

    'sql = "SELECT * FROM tbl_risposte INNER JOIN tbl_discussioni ON tbl_risposte.id_discussione = tbl_discussioni.id_discussione WHERE tbl_discussioni.id_discussione =" & id_discussione
    sql = "SELECT * FROM tbl_discussioni INNER JOIN tbl_risposte ON tbl_discussioni.id_discussione = tbl_risposte.id_discussione WHERE tbl_risposte.id_discussione=" &id_discussione
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn ,3,3


    Do While Not rs.EOF 


    %>
    <tr>
        <td>AVATAR </td>
        <td><%=rs("contenuto_discussione")%></td>
    </tr>
    <tr>
        <td>AVATAR RISPOSTA </td>
        <td><%=rs("contenuto_risposta")%></td>
    </tr>
    </table>
    <%

    rs.Movenext
    Loop
    Conn.Close
    Set Conn = Nothing
    Set rs = Nothing
    %> 
    Il problema è questo:

    CASO 1
    se aggiungo una risposta all'interno della tabella tbl_risposte allora vedo in output sia il rs contenuto_discussione (presente nella tabella tbl_discussione) che il rs contenuto_risposta (presente all'interno della tabella tbl_risposte).

    CASO 2
    Al contrario se aggiungo solo una descrizione senza aggiungere una risposta non visualizzo nulla.

    tbl_discussioni
    Codice PHP:
    id_discussione contenuto_discussione           id_forum |
    1                    questo è un contenuto di prova   1 
    tbl_risposte
    Codice PHP:
    id_risposta contenuto_risposta           id_discussione |
    1                Si lo so che è una prova!     
    Praticamente quando non è presente una risposta devo visualizzare il contenuto_discussione. Se è presente 1 o più risposte devo visualizzare il contenuto_discussione e il contenuto_risposta in base a quel determinato id_discussione

    Spero di essere stato il più chiaro possibile. GRAZIE IN ANTICIPO

  7. #7
    Utente di HTML.it L'avatar di Iron83
    Registrato dal
    Jun 2008
    Messaggi
    396
    un piccolo up per me

  8. #8
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    fai una left outer join o right outer join (a seconda di come metti l'ordine delle tabelle).

    select *
    from discussione
    left outer join risposta
    on ...

    select *
    from risposta
    right outer join discussione
    on...

    In genere si usa la prima.

    Cmq ti consiglio un ripasso su come funzionano le JOIN

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.