Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757

    Estrarre con unica sql da due tabelle diverse

    Ciao ragazzi.

    Il problema per cui ho deciso di chiedervi aiuto è il seguente:

    In un db sql server ho due tabelle:

    1) catalogo_articoli
    2) catalogo_fornitori

    Nella tabella n° 2 ho registrato una serie di fornitori (nome, indirizzo,etc) a cui è associato un id univoco;

    Nella tabella n°1 ho registrato i prodotti abbinati a quel fornitore e l'id del fornitore (non ho il nome);

    Adesso dovrei estrarre il "nome del fornitore" dalla tabella n°1, ma non ho idea come fare... so che è un errore di progettazione del dbase, ma se lasciassero fare ai programmatori e non si improvvisassero pianificatori di procedure, forse sarebbe meglio...

    alla fine togliere le "castagne dal fuoco" tocca sempre agli stessi...

  2. #2
    codice:
    sql="select nomefornitore from catalogo_fornitori c, catalogo_articoli ca where c.idfornitore=ca.idfornitore"
    sostiuisci nomefornitore e idfornitore con gli effettivi campi nel database

  3. #3
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Grazie, ma:
    codice:
    sql="select denominazione from catalogo_fornitori c, catalogo_articoli ca where c.id = ca.idlinea"
    Set RECDown=ConnDown.Execute(SQL)
    restituisce:
    Microsoft OLE DB Provider for ODBC Drivers error '80004005'
    [Microsoft][ODBC Microsoft Access Driver] The specified field 'denominazione' could refer to more than one table listed in the FROM clause of your SQL statement.
    :master:

  4. #4
    codice:
    sql="select c.denominazione as denominazione from catalogo_fornitori c, catalogo_articoli ca where c.id = ca.idlinea"
    Set RECDown=ConnDown.Execute(SQL)

  5. #5
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Grazie, ma c'è qualcosa che non va... infatti il nome del fornitore è sempre lo stesso per tutti i prodotti... codice completo.
    codice:
    Dim ConnDown 
    Set ConnDown=Server.CreateObject("ADODB.Connection") 
    ConnDown.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath(path&"/mdb-database/webstore.mdb") 
    Dim SQLDown,RECDown 
    
    SQLDown = "SELECT * FROM catalogo_articoli WHERE denominazione LIKE '%" & denominazione & "%' "
    Set RECDown=ConnDown.Execute(SQLDown)
    
    if RECDown.eof then 
    response.write "NESSUN RECORD CORRISPONDE IN QUESTO MOMENTO AI CRITERI DI SELEZIONE 
     
    " 
    else 
    While Not RECDown.EOF 
    
    IDCD = RECDown("ID")
    riferimentodifoto = RECDown ("riferimentodifoto")
    denominazione = RECDown ("denominazione")
    riferimentodiicona = RECDown ("riferimentodiicona")
    confezione = RECDown ("confezione")
    informazioni = RECDown ("informazioni")
    
    sql="select c.denominazione as denominazione from catalogo_fornitori c, catalogo_articoli ca where c.id = ca.idlinea"
    Set REC=ConnDown.Execute(SQL)
    
    
    %>
    
      <tr> 
      
    <td align="left" width="70"><font face="Verdana, Arial, Helvetica, sans-serif" size="1">)"><%=RECDown("InformazioniEstese")%></td>
    <td align="left" width="70"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("data_reg")%></td>
    <td align="left" width="86"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("ISBN")%></td>
    <td align="left" width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("codice")%></td>
    <td align="left" width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("denominazione")%></td>
    <td align="left" width="240"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("denominazione")%></td>
    <td align="left" width="128"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("informazioni")%></td>
    <td align="left" width="99"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("Confezione")%></td>
    <td align="left" width="66"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("collezione")%></td>
    <td align="left" width="66"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("n_collana")%></td>
    <td align="left" width="75"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=FormatNumber(RECDown("riferimentodiicona"), 2) %></td>
    <td align="left" width="51"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=FormatNumber(RECDown("scontato"), 2) %></td>
    <td align="left" width="68"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("RiferimentoDiFoto")%></td>

  6. #6
    scusa ma il record REC non lo usi nella tabella, quindi non vedrai mai i risultati della query, e non c'è il RECDown.movenext

  7. #7
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Originariamente inviato da santino83
    scusa ma il record REC non lo usi nella tabella, quindi non vedrai mai i risultati della query, e non c'è il RECDown.movenext
    il REC lo uso qui:
    codice:
    <td align="left" width="240"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("denominazione")%></td>
    e poi il codice completo è questo:
    codice:
    Dim ConnDown 
    Set ConnDown=Server.CreateObject("ADODB.Connection") 
    ConnDown.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath(path&"/mdb-database/webstore.mdb") 
    Dim SQLDown,RECDown 
    
    SQLDown = "SELECT * FROM catalogo_articoli WHERE denominazione LIKE '%" & denominazione & "%' "
    Set RECDown=ConnDown.Execute(SQLDown)
    
    if RECDown.eof then 
    response.write "NESSUN RECORD CORRISPONDE IN QUESTO MOMENTO AI CRITERI DI SELEZIONE 
     
    " 
    else 
    While Not RECDown.EOF 
    
    IDCD = RECDown("ID")
    riferimentodifoto = RECDown ("riferimentodifoto")
    denominazione = RECDown ("denominazione")
    riferimentodiicona = RECDown ("riferimentodiicona")
    confezione = RECDown ("confezione")
    informazioni = RECDown ("informazioni")
    
    sql="select c.denominazione as denominazione from catalogo_fornitori c, catalogo_articoli ca where c.id = ca.idlinea"
    Set REC=ConnDown.Execute(SQL)
    
    
    %>
    
      <tr> 
      
    <td align="left" width="70"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"> )"><%=RECDown("InformazioniEstese")%> </td>
    <td align="left" width="70"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("data_reg")%> </td>
    <td align="left" width="86"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("ISBN")%> </td>
    <td align="left" width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("codice")%> </td>
    <td align="left" width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=REC("denominazione")%> </td>
    <td align="left" width="240"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("denominazione")%> </td>
    <td align="left" width="128"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("informazioni")%> </td>
    <td align="left" width="99"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("Confezione")%> </td>
    <td align="left" width="66"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("collezione")%> </td>
    <td align="left" width="66"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("n_collana")%> </td>
    <td align="left" width="75"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=FormatNumber(RECDown("riferimentodiicona"), 2) %> </td>
    <td align="left" width="51"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=FormatNumber(RECDown("scontato"), 2) %> </td>
    <td align="left" width="68"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown("RiferimentoDiFoto")%> </td>
      </tr> 
    <%
    RECDown.MoveNext
    WEnd
    end if
    RECDown.Close
    ConnDown.Close
    Set RECDown = Nothing
    Set ConnDown = Nothing
    %>

  8. #8
    sarà la stanchezza ma stasera non riesco neanche a fare un join

    prova:

    select c.NOMEFORNITORE as NOME from catalogo_fornitori c where exist (select IDFORNITORE f from catalogo_articoli f where f.IDFORNITORE=c.IDFORNITORE)

  9. #9
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
    [Microsoft][ODBC Microsoft Access Driver] Syntax error. in query expression 'exist (select IDFORNITORE f from catalogo_articoli f where f.IDFORNITORE=c.IDFORNITORE)'.

  10. #10
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    ti ringrazio, ma è più semplice del previsto:
    codice:
    sql2 = "SELECT nomefornitore FROM catalogo_fornitore WHERE IDfornitore=" & RECDown("IDfornitore") 
    set RECDown2 = connDown.execute(sql2)
    
    <td align="left" width="100"><font face="Verdana, Arial, Helvetica, sans-serif" size="1"><%=RECDown2("nomefornitore")%></td>
    Buonanotte e riposati !!!!

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.