Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 29
  1. #1

    problema con join tra 2 tabelle

    ciao a tutti..sfrutto ancor aquesto forum per farvi una domanda. probabilmente faccio un errore stupido ma non capisco dove posso sbagliare. praticamente ho un database e in questa ci sono varie tabelle tra cui VDS_Generale e VDS_dettaglio. queste si collegano con i campi ID (nella tabella VDS_generale) e Id_dettaglio.
    devo estrarre alcuni valori da entrambe le tabelle e unirli in base a questi valori comuni. ho quindi pensato di usare la funzione INNER JOIN. giusto?
    però quando carico la pagina (seguendo tutto il percorso corretto) mi scrive che non trova valori (ma i vlaori ci sono!!). ho provato a fare tante modifiche ma..niente...
    vi posto il codice cosi se qualcuno riesce a trovare dove sbaglio lo ringrazio molto

    <%@LANGUAGE = VBScript%>


    <%
    Dim cn, rs ' Variabili per la connessione e per il Recordset

    ' Creo un'istanza per la connessione ed una per il Recordset
    Set cn = Server.CreateObject("ADODB.Connection")
    Set rs = Server.CreateObject("ADODB.Recordset")

    cn.Open str_cn ' Apro la connessione al database

    Dim SQL ' Creo la query SQL
    sql="SELECT * FROM VDS_Generale AS A inner JOIN VDS_dettaglio AS B ON A.ID = B.ID_vds"

    ' Apro il Recordset
    rs.Open SQL, cn
    %>
    <html>
    <head>
    <title>Lettura dati relativi alle ditte</title>
    </head>
    <body>

    <table border="1">
    <tr>

    <td>Anno:</td>
    <td>Macroarea:</td>

    <td>verificatore:</td>
    </tr>

    <%
    ' Verifico che la tabella contenga dati

    ' Se non ne contiene lancio un messaggio di avviso
    If rs.EOF = True Then
    %>



    Nessun dato trovato</p>




    <%
    ' Se invece ne contiene visualizzo i dati in funzione
    ' della query SQL specificata
    Else

    While rs.EOF = False
    %>

    <tr>

    <td><%=rs("Anno")%></td>
    <td><%=rs("macroarea")%></td>
    <td><%=rs("verificatore")%></td>
    </tr>



    <%
    rs.MoveNext
    Wend

    End If
    %>

    </table>

    </body>
    </html>
    <%
    ' Chiudo il Recordset
    rs.Close
    Set rs = Nothing

    ' Chiudo la connessione
    cn.Close
    Set cn = Nothing
    %>


    è possibile che sia un problema di INNER JOIN?? perchè se provo a scrivere LEFT JOIN mi restituisce i valori della prima tabella...

    grazie a tutti..Alessandro!

  2. #2
    Ciao,
    Se la relazione è tra VDS_Generale.ID e VDS_dettaglio.ID_vds (quindi ID_vds è l'ID della VDS_Generale) e ti estrae i dati solo con la LEFT JOIN, significa che non trova nessun "figlio" nella VDS_dettaglio in relazione con la VDS_Generale, altrimenti potrebbe essere la relazione non corretta
    Massimo Missaglia
    --------------------------------
    http://www.massimomissaglia.com

  3. #3
    ti ringrazio per la tua pronta risposta. dopo il tuo suggerimento sono andato subito a verificare il codice scritto e mi sono accorto di aver fatto un piccolo (ma grossolano) errore nel richiamare il database!

    grazie comunque per avermi risposto!
    Alessandro

  4. #4
    visto che ci sono provo a sfruttare ancora la tua e la vostra gentilezza.
    se io volessi trovare i valori presenti nelle due tabelle inserendo il valore che cerco in una form..è possibile oppure no? c'è un codice particolare da usare? grazie mille!

  5. #5
    SELECT * FROM VDS_Generale AS A inner JOIN VDS_dettaglio AS B ON A.ID = B.ID_vds WHERE A.NomeCampo='Prova' AND B.NomeCampo='Prova'
    Massimo Missaglia
    --------------------------------
    http://www.massimomissaglia.com

  6. #6
    io infatti ho usato proprio questa stringa di codice. tuttavia mi da errore.

    sql = "SELECT * FROM VDS_Generale AS A inner JOIN VDS_dettaglio AS B ON A.ID = B.ID_vds WHERE A.ID = '&strnome&' AND B.ID_vds = '&strnome&' "

    "nome" è il nome della form dove immetto il valore e il valore viene registrato in "strnome".

    il motivo dell'errore può essere che ID e ID_vds sono campi di tipo numerico e il valore che immetto nella form è un numero?
    perche se scrivo

    sql = "SELECT * FROM VDS_Generale AS A inner JOIN VDS_dettaglio AS B ON A.ID = B.ID_vds WHERE A.ID = 1 AND B.ID_vds = 1 "

    mi da il risultato che richiedo ma se prendo il valore dalla form da errore..boh!

  7. #7
    allora: in parte sono riuscito a risolvere. se dalla form inserisco un valore testuale che va a riicercare all'interno del Db in un campo sempre di tipo testuale ..mi trova il valore che cerco.

    se invece vado a cercare quello che mi serve in base all'ID (che poi è il campo in cui vado a fare il JOIN) quando richiamo la pagina mi apre la form ma sotto mi indica un errore. se poi nella form inserisco un valore numerico..ok..mi apre i campi. se inserisco un valore di testo o nessun valore mi da lo stesso errore di prima. dipende dal tipo di dato che inserisco?

    ti posto il codice cosi se mi riesci a dare una mano te ne sono grato..io proprio non capisco il perchè...

    grazie in anticipo!



    <head>
    </head>

    <body>

    Inserire il nome della ditta da ricercare



    <FORM action="ricercavds2.asp" method=POST>
    <div align="center">
    <TABLE>
    <TBODY>
    <TR align=middle>
    <TD align=right>
    <font face="Verdana" size="2">ID: </font></TD>
    <TD align=left>
    <font face="Verdana" size="2">
    <input type="text" name="nome" size="20"></font></TD>
    </TR>
    <TR align=middle>
    <TD align=right>
    </TD>
    <TD align=left><font face="Verdana" color="#000000" size="1">
    <INPUT type=submit value="Ricerca"><INPUT type=reset value="Cancella"></font></TD></TR>
    </TBODY></TABLE>
    </div>
    </FORM>





    <table border="1" width="100%" id="table128" style="border-collapse: collapse" bordercolor="#000000" cellspacing="0" cellpadding="5">

    <tr>
    <td>ID:</td>
    <td>Anno:</td>
    <td>Macroarea:</td>

    <td>verificatore:</td>
    </tr>

    <%

    dim strnome
    strnome = request.form("nome") --------------> richiamo il valore numerico inserito nella form

    Dim conn,cn
    conn = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("/VDS/database/Verifichedisistema.mdb") & ";"

    set cn= server.CreateObject("adodb.connection")
    cn.open conn

    dim rs,sql
    Set rs = Server.CreateObject("ADODB.Recordset")


    sql = "SELECT * FROM VDS_Generale AS A inner JOIN VDS_dettaglio AS B ON A.ID = B.ID_vds WHERE A.ID = "&strnome&" AND ID_vds = "&strnome&" "

    rs.open sql, cn, 0,3


    %>


    <%do While not rs.EOF%>

    <tr>
    <td><%=rs("ID")%></td>
    <td><%=rs("Anno")%></td>
    <td><%=rs("macroarea")%></td>
    <td><%=rs("verificatore")%></td>
    </tr>

    <%
    rs.MoveNext
    loop
    %>
    </table></p>



    <%
    rs.close()
    set rs=NOTHING
    cn.close()
    set cn=NOTHING
    %>



    </body>
    </html>

  8. #8
    se l'ID è numerico NON puoi ricercarlo con una stringa! devi ricercarlo con un numero...

  9. #9
    ma io infatti quando inserisco il valore sulla form inserisco un numero. però sicuramente non è questo il problema

    penso, ma non ne sono sicuro, che il problema sia nella dicharazione della form oppure quando vado a richiamarla all'interno del codice sql. sbaglio?
    come dovrei correggere?

  10. #10
    1. dicci l'errore
    2. stampa la query e postala

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.