Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666

    Relazioni tra 2 tabelle di un unico db

    Ciao a tutti, devo realizzare un database contenente automobili, che visualizzerò naturalmente in asp.

    Il mio problema è come relazionare le 2 tabelle tra di loro per fare in modo che le categorie presenti in una tabella possano ripetersi nella seconda.

    Avevo pensato ad una struttura di questo tipo:


    Tabella CATEGORIE

    IdCat | Codice | Categoria


    Tabella MODELLI

    IdMod | Categoria | Marca | Modello


    Non riesco a capire come fare..

    Se devo ad esempio modificare il modello di una determinata auto dovrei fare una select per categoria, ma utilizzando il codice della categoria.

    Spero di essere riuscito a spiegarmi bene.

    Grazie in anticipo..
    AltF4

  2. #2
    non ho capito molto
    Quello che ho capito è che se modifichi una descrizione nella categoria la vuoi modificare anche nella tabella modelli è corretto?
    Se è così basta che nella seconda tabella utilizzi id della categoria non hai mai problemi. Così occupi meno spazio quando devi modiifare tocchi solo da una parte.
    Se visulizzi la vai a prendere dall'altra tabella

    Tabella CATEGORIE

    IdCat | Codice | Categoria


    Tabella MODELLI

    IdMod | IdCat | Marca | Modello

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Ti ringrazio, più o meno è quello che vorrei fare.

    Ma come faccio a visualizzare tutte le macchine di una specifica categoria?

    Se visualizzo la tabella MODELLI:

    IdMod | IdCat | Marca | Modello

    come visualizzo la Categoria?

    Immaginiamo qualcosa del genere:

    codice:
    <%	
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    Modelli = "SELECT * FROM Modelli ORDER BY ID DESC"
    RecSet.Open Modelli, ConnectModelli, adOpenStatic, adLockOptimistic %>
    
    <%	Do Until RecSet.EOF %>
    
    
    <%=RecSet("Marca")%> - <%=RecSet("Modello")%>
    
    <%
    RecSet.MoveNext
    Loop	
    RecSet.Close	
    ConnectModelli.Close	%>
    Non ho la possibilita (o non la conosco..) di visualizzare la categoria..
    AltF4

  4. #4
    usa le join

    SELECT Modelli.*,categorie.Categoria FROM Modelli,categorie
    where categorie.IdCat= modelli.IdCat ORDER BY ID DESC

    vedi che visualizzi tutti i dati che ti interessano

    oppure all'interno del ciclo
    fai una select per la tabella categoria

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Non ho mai usato le join, ma se è la soluzione migliore e forse l'unica allora le userò.

    Quindi se faccio una select in questo modo:

    codice:
    SELECT Modelli.*,categorie.Categoria FROM Modelli,categorie 
    where categorie.IdCat= modelli.IdCat ORDER BY ID DESC
    poi potrei visualizzare così:

    codice:
    <%=RecSet("Categoria")%> - <%=RecSet("Marca")%> - <%=RecSet("Modello")%>
    E' corretto?
    AltF4

  6. #6
    si corretto

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Ho fatto una prova, ma mi restituisce questo errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

    [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

    /prova.asp, line 16


    I campi delle tabelle sono:

    Tabella CATEGORIE

    IdCat (Contatore)
    Codice (Testo)
    Categoria (Memo)


    Tabella MODELLI

    IdMod (Contatore)
    IdCat (Numerico)
    Marca (Memo)
    Modello (Memo)


    La riga N. 16 è l'ultima di queste che seguono:

    codice:
    <%	
    Set RecSet = Server.CreateObject("ADODB.Recordset")
    Modelli = "SELECT Modelli.*,Categorie.Categoria FROM Modelli,Categorie where Categorie.IdCat=Modelli.IdCat ORDER BY ID DESC"
    RecSet.Open Modelli, ConnectModelli, adOpenStatic, adLockOptimistic %>
    Non capisco
    AltF4

  8. #8
    Ciao
    Probabilmente i campi del db non corrispondono a quelli citati nella query!
    Tu hai IdCat e IdMod, da dove prendi ID di:
    ORDER BY ID DESC
    Controlla bene la corrispondenza dei nomi dei campi usati nella query con quelli del database.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Che incompetente... che sono!

    Hai proprio ragione, doveva essere:

    ORDER BY IDMOD DESC

    Ti ringrazio!!!
    AltF4

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Ritorno su questa discussione perchè sono riuscito grazie al Vs aiuto a visualizzare i record della tabella Modelli uniti alla Categoria presente nella tabella Categorie.

    Ma provando a modificare un modello, non riesco ad elencare i modelli di una specifica categoria.

    Ho fatto in questo modo:

    - ho creato una pagina dove faccio scegliere la categoria per la quale si desidera modificare il modello:

    codice:
    <form name="mod" action="modifica_modello.asp" >
    <select name="IdCat" class="form" id="IdCat">
         
    <% 	Set RecSet = Server.CreateObject("ADODB.Recordset")
    	Modelli = "SELECT * FROM Categorie ORDER BY IdCat ASC"
    	RecSet.Open Modelli, ConnectModelli, adOpenStatic, adLockOptimistic %>
          
    <% do while not RecSet.eof 
    
    	IdCat=RecSet("IdCat")
    	categoria=RecSet("Categoria") 
    	response.write("<option value=" & IdCat &">" & categoria &"</option>") 
    
    	RecSet.movenext 
    	loop %>
          
    <%  	RecSet.Close
    	ConnectNews.Close %>
    
    	</select>
    	<input name="B1" type="submit" class="bott" value="Scegli">
    	</form>
    e fin qui sembra funzionare, successivamente devo fare la lista dei modelli per la categoria scelta (attraverso la select di cui sopra) e ho cercato di fare in questo modo:

    codice:
    <%	
    	Set RecSet = Server.CreateObject("ADODB.Recordset")
    	Modelli = "SELECT Modelli.*,Categorie.Categoria FROM Modelli,Categorie where Categorie.IdCat=Modelli.IdCat AND IDCAT = " & Trim(Request.Querystring("IDCAT")) & " "
    	RecSet.Open Modelli, ConnectModelli, adOpenStatic, adLockOptimistic %>
    ma ricevo il seguente errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80004005'

    [Microsoft][ODBC Microsoft Access Driver] The specified field 'IDCAT' could refer to more than one table listed in the FROM clause of your SQL statement.

    Ho provato a sostituire:

    Trim(Request.Querystring("IDCAT"))

    con

    Trim(Request.Form("IDCAT"))

    ma niente da fare.. non riesco proprio a capire
    AltF4

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 © 2021 vBulletin Solutions, Inc. All rights reserved.