Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    159

    Problema query con inner join

    Salve, è la prima volta che mi cimento con delle query in cui sia prsente una inner join e mi dà problemi che non capisco. La query è la seguente:

    codice:
    <%
    set rsCategorie = server.CreateObject("adodb.recordset")
    Sql = "select * from stCategorie INNER JOIN"_
                      &" Categorie ON stCategorie.id_Sezione = stSezione.id order by stCategorie.nome"
    rsCategorie.Open Sql, Cn,1,3
    rsCategorie.MoveFirst
    while not rsCategorie.EOF 
    %>      
          <tr>
            <td width="100%" height="24" style="border-style: none; border-width: medium" colspan="2" background="images/sito/thumb4.gif">
             <%=rsCategorie("nome")%></td>
          </tr>
          <tr>
            <td width="8%" height="11" style="border-style: none; border-width: medium" valign="top">
            </td>
            <td width="92%" height="11" style="border-style: none; border-width: medium" valign="top">
    <%
    set rsSottocategorie = server.CreateObject("adodb.recordset")
    Sql = "select * from stSottocategorie where id_categorie='"&rsCategorie("id")&"' order by nome"
    rsSottocategorie.Open Sql, Cn,1,3
    while not rsSottocategorie.EOF
    
    link = rsSottocategorie("link")
    if link = "" then
    %>
            <%=rsSottocategorie("nome")%>
    
    <%
    else
    %>
            "><%=rsSottocategorie("nome")%>
    
    <% 
    end if
    
    rsSottocategorie.movenext
    wend
    %>
            </td>
          </tr>
    <% 
    if not rsCategorie.EOF then  
    rsCategorie.MoveNext  
    end if
    wend
    %>
    e mi dà dei problemi legati alla prima query (ma credo che me li dia anche con la seconda). Il database è fatto nel seguente modo:

    sezione: id , nome
    stCategorie: id , id_sezione , nome
    stSottocategorie: id, id_categoria , nome, link

    Ho messo i colori per indicarvi la corrispondenza che vorrei creare. Sapete darmi una mano? Grazie mille a tutti

  2. #2
    Utente di HTML.it L'avatar di Jupy64
    Registrato dal
    Sep 2004
    Messaggi
    1,151
    Ciao, prima di tutto c'è un errore (evidenziato in rosso) nello scrivere la tabella di JOIN
    codice:
    Sql = "select * from stCategorie INNER JOIN Categorie  ON stCategorie.id_Sezione = stSezione .id order by stCategorie.nome"
    suppongo che la tabella giusta sia stSezione
    Poi devi specificare quali campi vuoi, quelli della tabella stCategorie, della tabella stSezione o di entrambe le tabelle?
    lo devi specificare, altrimenti non sa cosa fare..
    ad esempio, se vuoi i campi di entrambe:
    codice:
    Sql = "select stCategorie.*,stSezione.* from stCategorie INNER JOIN stSezione ON stCategorie.id_Sezione = stSezione.id order by stCategorie.nome"
    Jupy

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    159
    Grazie mille! Credo di aver capito. Ora faccio qualche prova, nel caso non ci riuscissi ritnro. Grazie mille per la gentilezza!

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    159
    Dovrei chiedere un ulteriore aiuto... Ho fatto le dovute correzioni ma il menù che si presenta è sbagliato... Non mi passa al record successivo... O meglio, i record nella tabella richiesta sono 3 e mi fa vedere sempre lo stesso record, prelevato però dalla tabella dalla quale faccio le uguaglianze.Ad esempio nella prima query:

    codice:
    Sql = "select * from stCategorie INNER JOIN"_
                 &" stSezioni ON stCategorie.id_Sezione = stSezioni.id order by stCategorie.nome"
    quando richiamo con <%=rsCategorie("nome")%> mi fa vedere il nome nella tabella stSezione, contando però quanti record sono presenti nel'altra tabella. Ti faccio uno schema per rendere l'idea:

    Ho il codice e questo database:

    stSezioni: id, nome
    stCategorie: id, nome, id_sezione
    stSottocategorie: id, nome, id_categoria

    il menù dovrebbe darmi una cosa del genere:

    Categoria1
    Sottocategoria1
    Sottocategoria2
    Sottocategoria3

    Categoria2
    Sottocategoria4
    Sottocategoria5
    Sottocategoria6

    Invece mi resituisce un menù del genere:

    Sezione1
    Categoria1
    Categoria1
    Categoria1

    Sezione1
    Categoria1
    Categoria1
    Categoria1

    Sezione1
    Categoria1
    Categoria1
    Categoria1


    Ovvero il numero di record è preso dalle giuste tabelle, mentre i record da tutt'altra parte, ovvero dalle tabelle con cui ho RELAZIONATO le tabelle da ui estrarre i record. Per curiosità, avendo tutte le tabelle un campo nome, ho provato a cambiarlo rendendolo unico: morale della storia tutto funziona senza problemi. Potete dirmi perchè questa cosa? O aiutrmi a risolvere? Eppure quando faccio le inner join sto estraendo SOLO da una tabella, non da tutte le tabelle relazionate!

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.