Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262

    Inner join tra + tabelle

    ciao

    ho queste tbl (ma ke sarebbero di più)

    cat: idcat,cat
    colonie:id, nomi
    repubblica:id,nomi

    in pratica faccio la query ma nn mi trova risultati adatti a soddisfare la query.

    in pratica dovrei incrociare al campo cat.cat della tbl cat [che prevede la categoria d'appartenenza dei francobolli (colonie repubblica)] i dati delle diverse tabelle in modo che posso scegliere in quele epoca vedere i miei francobolli..
    spero di essere stato kiaro
    PS
    il campo id.cat e id hanno valori simili (sn tutti contatori)
    il campo cat e univoco e uguale x tutte le tabelle
    + kiaro d cosi nn riesco ke se no mi confondo....vedete voi kosa kiedermi...SORRY

    posto un il code:

    codice:
    <%@ Language=VBScript %> 
    <% response.buffer=true %>
    <% Server.ScriptTimeout = 300 %>
    
    
    <html>
    <head>
    <title>Gestione archivio collezionismo</title>
    <style type="text/css">
    <!--
    body {
    	font-family: "Century Gothic";
    	color: #000099;
    }
    -->
    </style>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) {  //reloads the window if Nav4 resized
      if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
        document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
      else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    //-->
    </script>
    </head>
    <BODY LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
    
    
    </p>
    
    
      <div align="center"> </p> 
    <TABLE WIDTH="672" CELLPADDING="4" CELLSPACING="4" BORDER="0" align="center">
      <TR height="60" valign="middle"> 
        <TD width="656" align="center"> <h1><font face="Century Gothic" size="6" color="red">Risultati 
            della ricerca</font></h1></TD>
      <TR> 
        <TD> <font face="Century Gothic"> 
          <%
    			iPageSize = 10 'NUMERO RECORD PER PAGINA
    
    			If Request.QueryString("page") = "" Then
    				iPageCurrent = 1
    			Else
    				iPageCurrent = CInt(Request.QueryString("page"))
    			End If
    
    
    
    %>
          <%
    	  nome = request.Form("nome")
          strSQL="select cat.*, colonie.*, repubblica.* FROM cat,colonie,repubblica WHERE (cat.cat='"& cat & "' and cat.idcat= '" & idcat & "') OR (colonie.nome='"& nome & "' and colonie.id= '" & id & "') OR (repubblica.nome='"& nome & "' and repubblica.id= '" & id & "')"
    
    
    			Set objRS = Server.CreateObject("ADODB.Recordset")
    			objRS.PageSize = iPageSize
    			objRS.CacheSize = iPageSize
                objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText
    
    			reccount = objRS.recordcount
    			iPageCount = objRS.PageCount
    
    			If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
    			If iPageCurrent < 1 Then iPageCurrent = 1
    
    			If iPageCount = 0 Then
    				Response.Write "
    
    <table><td><font face='verdana' size='2' color='#000000'>Non sono stati trovati documenti corrispondenti.
    
    <a href=index.asp>Torna alla ricerca</a></td></table></p>"
    			Else
    				objRS.AbsolutePage = iPageCurrent
    				iRecordsShown = 0
    				%>
          </font> <table cellpadding="0" cellspacing="0" border="0" width="100%">
            <tr> 
              <td height="47"> <table width="100%" height="48" border="0" cellpadding="2" cellspacing="1">
                  <tr height="22"> 
                    <td WIDTH="25%"><font face="Century Gothic" size="2" color="red">Id</font></td>
                    <td WIDTH="36%"><font face="Century Gothic" size="2" color="red">Nome</font></td>
                    <td WIDTH="21%" align="center"><font face="Century Gothic" size="2" color="red">Categoria</font></td>
                  </tr>
                  <%
    								'SI VISUALIZZA IL CONTENUTO DELLA STRINGA SQL
    								'ALL'INTERNO DELLA TABELLA PRIMA DEFINITA
    								cont=1
    								Do While iRecordsShown < iPageSize And Not objRS.EOF
    									Dim Rig, bg
    									Rig = Rig + 1
    									If Rig Mod 2 = 0 then
    									
    									Else
    											
    									End if
    									
    										
    									Response.Write "<tr bgcolor = " & bg & "><td><font color='#000000' face='Verdana' size='1'>" & (iPageSize*iPageCurrent)-iPageSize+Cont & "</font></td>"
     									Response.Write "<td><font color='#000000' face='Verdana' size='1'><a href='bolli.asp?categoria="& objRS("cat") &"'>" & objRS("nome") & "</font></td>"
    									Response.Write "<td align=center> <font color='#000000' face='Verdana' size='1'> "& objRS("cat") & "</font></td>"
    									
    									Cont = Cont + 1
    									'POSIZIONAMENTO ALLA RIGA SUCCESSIVA DEL DB
    									iRecordsShown = iRecordsShown + 1
    									objRS.MoveNext
    								Loop
    								'PULIZIA DEGLI OGGETTI ADO
    								objRS.Close
    								Set objRS = Nothing
    								%>
                </table>
                <div align="right"></div></td>
            </tr>
          </table>
          <font face="Century Gothic"> 
          <%End if%>
          </font> 
    
     <font face="Century Gothic"> 
            <%If ipagecount <> 1 Then%>
            </font>
          <center>
            <table>
              <tr valign="middle"> 
                <td width="50%" align="center" valign="middle"><font face="Century Gothic" size="1" color="#000000"> 
                  [ 
                  <%if iPageCurrent-2 > 0 and iPageCurrent > 2 then%>
                  [img]../images/first.gif[/img] 
                  <%end if%>
                  <%if iPageCurrent > 1 then%>
                  [img]../images/pre.gif[/img] 
                  <%end if%>
                  <%if iPageCount > 2 then
    								if iPageCurrent-2 < 1 then da_pag = 1 else da_pag = iPageCurrent-2
    								if iPageCurrent+2 > iPageCount then fino_a_pag = iPageCount else fino_a_pag = iPageCurrent+2
    							else
    								da_pag = 1
    								fino_a_pag = iPageCount
    							end if%>
                  <%for i = da_pag to fino_a_pag%>
                  <%if i = iPageCurrent then%>
                  <font color="red"><%=i%></font> 
                  <%else%>
                  <%end if%>
                  <%next%>
                  <%if iPageCurrent > 0 and iPageCurrent < iPageCount then%>
                  [img]../images/next.gif[/img] 
                  <%end if%>
                  <%if iPageCurrent+1 < iPageCount then%>
                  [img]../images/last.gif[/img] 
                  <%end if%>
                  ] </font></td>
              </tr>
              <tr> 
                <td colspan="2" align="center"><font face="verdana" size="1" color="#000000"> 
                  <center>
                    <font face="Century Gothic"> Pagina <font color="#FF0000"><%=iPageCurrent%></font></font> <font face="Century Gothic">di 
                    <font color="#FF0000"><%=iPageCount%></font></font> 
                  </center>
                  </font></td>
              </tr>
            </table>
          </center>
          <font face="Century Gothic"> 
          <%end if%>
          <%
    			objConn.Close
    			Set objConn = Nothing
    			%>
          </font></TD>
      </TR>
    </TABLE>		
    
    
    </p>
    
    
    </p>
    </body>
    </html>

  2. #2
    Il campo cat è presente in tutte le tabelle ?
    anche nelle tabelle colonie, repubblica, etc.?

    Se si, questo cambi le cose...

    Prova con una query così allora :

    sql= "select * from colonie tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = tblcat.idcat"
    sql= sql & "union select * from repubblica tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = cat.idcat"

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262
    scusa se t rispondo solo ora ma lavorando
    posso rispondere solo quando rientro a casa

    la cosa nn va, questo è l'errore:

    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][Driver ODBC Microsoft Access] Istruzione SQL non valida. Prevista 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' o 'UPDATE'.
    /collezionismo/txt/motore.asp, line 57


    [CODE]

    cat = request.Form("cat")
    if cat="Tutte" then cat="%"


    strSQL= "select * from colonie tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = tblcat.idcat"
    strSQL= sql & "union select * from repubblica tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = cat.idcat"
    Set objRS = Server.CreateObject("ADODB.Recordset")
    objRS.PageSize = iPageSize
    objRS.CacheSize = iPageSize
    (l. 57)objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText

  4. #4
    Chiaro che non va hai fatto la concatenazione sbagliata delle stringhe

    Sbagliata :
    codice:
    strSQL= "select * from colonie tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = tblcat.idcat" 
    strSQL= sql & "union select * from repubblica tbl, cat tblcat where id='"&id&"' AND nome ='"&nome&"' and tbl.idcat = cat.idcat"

    Giusta

    codice:
    strSQL= "select * from colonie tbl, cat tblcat where tbl.id='"&id&"' AND tbl.nome ='"&nome&"' and tbl.idcat = tblcat.idcat" 
    strSQL= strSQL & "union select * from repubblica tbl, cat tblcat where tbl.id='"&id&"' AND tbl.nome ='"&nome&"' and tbl.idcat = cat.idcat"

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262
    ok..
    x ora sn ancora all'univ. ma appena rientro a casa la provo

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262
    nn capisco mi segnala sempre un errore di errata sintassi:

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
    [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi. nell'espressione della query 'tbl.id='' AND tbl.nome ='' and tbl.idcat = tblcat.idcatunion select * from repubblica tbl, cat tblcat where tbl.id='' AND tbl.nome ='' and tbl.idcat = cat.idcat'.
    /collezionismo/txt/motore.asp, line 56
    ke è questa
    codice:
    objRS.Open strSQL, objConn, adOpenStatic, adLockReadOnly, adCmdText


    io ricontrollo tutto ma nn trovo nulla..

    PS
    cmq mi spieghi ke vuol dire questo comando tbl
    ke trovo nella sql (nel db nn esiste nessun campo "tbl", è una istruzione di SQL?)

  7. #7
    Allora tbl è un alias un soprannome per la tabella che ti serve per usarlo nelle query annidate.

    L'errore è perchè la scritta union è attaccata alla voce idcat, mettici uno spazio e vedrai che funziona

  8. #8
    objRS.Open strSQL, objConn, 1, 3


  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262
    1) ho messo lo spazio
    2)ho provato anke con la modifica di scorpio

    ma sorry nn funzia

    Tipo di errore:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
    [Microsoft][Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 2.
    /collezionismo/txt/motore.asp, line 57

    ke sia una query troppo complessa?
    a voi la sentenza.. :master:

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    262
    nessuno...?
    VVoVe:

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.