Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Query con inner join

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    229

    Query con inner join

    Ciao ragazzi..

    sto facendo un po di praticantatum con l'inner join e guardacaso, ho un problema giusto giusto su quella query.

    Script semplicissimo in asp. Due tabelle, una con anagrafica alteti (ANA) e una con gli sport praticati (SPORT).

    Vorrei riuscire ad associare lo sport chiamandomi prima l'id atleta da ANA, selezionare il record giusto in SPORT e aggiungere lo sport. Più o meno faccio così:
    codice:
    <body>
    	Inserisci l'anagrafica:
    
    
    	<form name="ana" method="post">
            <div style="width:250px">Nome</div>
            <input type="text" name="nome" id="nome" />
    
            <div style="width:250px">Cognome</div>
            <input type="text" name="cognome" id="cognome" />
    
            <div style="width:250px">Anno</div>
            <input type="text" name="anno" id="anno" />
    
    
            <input type="submit" value="Salva" name="bottone" id="bottone" />
    	</form>
    
    	<%
    	if request.Form("bottone")="Salva" then
    		dim RSX, CNN, ConnString, query
    		ConnString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    		set CNN = server.CreateObject("ADODB.CONNECTION")
    		CNN.open ConnString
    		set RSX = server.CreateObject("ADODB.RECORDSET")
    		query = "select * from ANA"
    		RSX.open query, CNN, 3, 3
    	
    			RSX.addnew
    			RSX("nome")= request.form("nome")
    			RSX("cognome")=request.form("cognome")
    			RSX("anno")= request.form("anno")
    			RSX.update
    			response.Redirect("default.asp?inserisci=sport")
    					
    		RSX.Close
    		CNN.Close
    		set RSX = Nothing
    		set CNN = Nothing
    	end if
    	if request("inserisci")="sport" then
    		%>
    		
    
    		
    
    		Ricerca l'utente per cognome:
    
    
    		<form name="cognome" method="post">
    			<div style="width:250px">Cognome</div>
    			<input type="text" name="cognomex" id="cognomex" />
    
    
    			<input type="submit" value="Ricerca" name="bottone" id="bottone" />
    		</form>
    		<%
    	
    		if request.Form("bottone")="Ricerca" then
    	'	response.Write(request.Form("cognomex"))
    	'	response.End()
    			ConnString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    			set CNN = server.CreateObject("ADODB.CONNECTION")
    			CNN.open ConnString
    			set RSX = server.CreateObject("ADODB.RECORDSET")
    			query = "select * from ANA where cognome = '" & request.Form("cognomex") & "'"
    			RSX.open query, CNN, 3, 3
    			do until RSX.EOF
    		%>
    			"><%=RSX("nome")%><%=RSX("cognome")%>
    
    		<%
    			RSX.movenext
    			loop
    			
    			RSX.Close
    			CNN.Close
    			set RSX = Nothing
    			set CNN = Nothing
    		end if
    		if request("id_a") <> "" then
    			response.Write("entro")
    			response.End()
    		%>
    		
    
    
    			<form name="sport" method="post">
    				<div style="width:250px">Sport praticato</div>
    				<input type="text" name="sport" id="sport" />
    
    
    				<input type="submit" value="Salva" name="bottonee" id="bottonee" />
    			</form>
    			<%
    			if request.form("bottonee")="Salva" then
    				dim RSX2, CNN2, ConnString2, query2
    			
    				ConnString2 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    				set CNN2 = server.CreateObject("ADODB.CONNECTION")
    				CNN2.open ConnString2
    				set RSX2 = server.CreateObject("ADODB.RECORDSET")
    				query2 = "select * from ANA inner join SPORT on ana.id = sport.id where ana.id = " & request("id") & ";"
    				RSX2.open query2, CNN2, 3, 3
    				
    				RSX2("sport")=request.Form("sport")
    				RSX2.update
    				
    				RSX2.Close
    				CNN2.Close
    				set RSX2 = Nothing
    				set CNN2 = Nothing
    			end if
    		end if
    	end if
    	%>
    </body>

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Query con inner join

    Originariamente inviato da Gio2011
    Ciao ragazzi..

    sto facendo un po di praticantatum con l'inner join e guardacaso, ho un problema giusto giusto su quella query.

    Script semplicissimo in asp. Due tabelle, una con anagrafica alteti (ANA) e una con gli sport praticati (SPORT).

    Vorrei riuscire ad associare lo sport chiamandomi prima l'id atleta da ANA, selezionare il record giusto in SPORT e aggiungere lo sport. Più o meno faccio così:
    codice:
    <body>
    	Inserisci l'anagrafica:
    
    
    	<form name="ana" method="post">
            <div style="width:250px">Nome</div>
            <input type="text" name="nome" id="nome" />
    
            <div style="width:250px">Cognome</div>
            <input type="text" name="cognome" id="cognome" />
    
            <div style="width:250px">Anno</div>
            <input type="text" name="anno" id="anno" />
    
    
            <input type="submit" value="Salva" name="bottone" id="bottone" />
    	</form>
    
    	<%
    	if request.Form("bottone")="Salva" then
    		dim RSX, CNN, ConnString, query
    		ConnString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    		set CNN = server.CreateObject("ADODB.CONNECTION")
    		CNN.open ConnString
    		set RSX = server.CreateObject("ADODB.RECORDSET")
    		query = "select * from ANA"
    		RSX.open query, CNN, 3, 3
    	
    			RSX.addnew
    			RSX("nome")= request.form("nome")
    			RSX("cognome")=request.form("cognome")
    			RSX("anno")= request.form("anno")
    			RSX.update
    			response.Redirect("default.asp?inserisci=sport")
    					
    		RSX.Close
    		CNN.Close
    		set RSX = Nothing
    		set CNN = Nothing
    	end if
    	if request("inserisci")="sport" then
    		%>
    		
    
    		
    
    		Ricerca l'utente per cognome:
    
    
    		<form name="cognome" method="post">
    			<div style="width:250px">Cognome</div>
    			<input type="text" name="cognomex" id="cognomex" />
    
    
    			<input type="submit" value="Ricerca" name="bottone" id="bottone" />
    		</form>
    		<%
    	
    		if request.Form("bottone")="Ricerca" then
    	'	response.Write(request.Form("cognomex"))
    	'	response.End()
    			ConnString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    			set CNN = server.CreateObject("ADODB.CONNECTION")
    			CNN.open ConnString
    			set RSX = server.CreateObject("ADODB.RECORDSET")
    			query = "select * from ANA where cognome = '" & request.Form("cognomex") & "'"
    			RSX.open query, CNN, 3, 3
    			do until RSX.EOF
    		%>
    			"><%=RSX("nome")%><%=RSX("cognome")%>
    
    		<%
    			RSX.movenext
    			loop
    			
    			RSX.Close
    			CNN.Close
    			set RSX = Nothing
    			set CNN = Nothing
    		end if
    		if request("id_a") <> "" then
    			response.Write("entro")
    			response.End()
    		%>
    		
    
    
    			<form name="sport" method="post">
    				<div style="width:250px">Sport praticato</div>
    				<input type="text" name="sport" id="sport" />
    
    
    				<input type="submit" value="Salva" name="bottonee" id="bottonee" />
    			</form>
    			<%
    			if request.form("bottonee")="Salva" then
    				dim RSX2, CNN2, ConnString2, query2
    			
    				ConnString2 = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    				set CNN2 = server.CreateObject("ADODB.CONNECTION")
    				CNN2.open ConnString2
    				set RSX2 = server.CreateObject("ADODB.RECORDSET")
    				query2 = "select * from ANA inner join SPORT on ana.id = sport.id where ana.id = " & request("id") & ";"
    				RSX2.open query2, CNN2, 3, 3
    				
    				RSX2("sport")=request.Form("sport")
    				RSX2.update
    				
    				RSX2.Close
    				CNN2.Close
    				set RSX2 = Nothing
    				set CNN2 = Nothing
    			end if
    		end if
    	end if
    	%>
    </body>
    Perché nella join metti ana.id = sport.id? se per id indichi il campo chiave delle due tabelle non uscirà mai nulla. Mi aspetto che in una delle due tabelle ci sia una FK o una associativa.

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    229
    Forse è meglio che mi studio la teoria.

    Da questo commento deduco che non posso fare il join sulla chiave primaria (id:contatore), ma devo avere un campo della tabella, che aggiorno quando inserisco un record nuovo, contenente l'id.

    Cioè quando in ANA inserisco un atleta con id=20, creo un record in SPORT con campo id_atleta uguale all'id (chiave primaria) della tabella ANA.

    Giusto?

  4. #4
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Gio2011
    Forse è meglio che mi studio la teoria.

    Da questo commento deduco che non posso fare il join sulla chiave primaria (id:contatore), ma devo avere un campo della tabella, che aggiorno quando inserisco un record nuovo, contenente l'id.

    Cioè quando in ANA inserisco un atleta con id=20, creo un record in SPORT con campo id_atleta uguale all'id (chiave primaria) della tabella ANA.

    Giusto?
    Si, anche se in questo caso io creerei:
    Tabella ANA: Anagrafica degli atleti
    Tabella SPORT: Anagrafica delle discipline sportive
    Tabella ANA_SPORT: Associazione tra atleti e sport praticati.

    Per un atleta può praticare più sport e lo stesso sport può essere praticato da più atleti.

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    229
    roba da 4a superiore

    praticamente lo script sarà:
    inserisco nome cognome e anno,

    ricerco per cognome

    scelgo a quale atleta associare lo sport

    ...(?)

    a questo punto ho il record in ANA selezionato, e quindi inserisco in SPORT l'id (chiave primaria in ANA) associato all'atleta?

    Fatto questo, come faccio a popolare ANA_SPORT?E' a questo punto che entra in gioco il join?Che aggrovigliamento di neuroni di prima mattina

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2011
    Messaggi
    229
    Come faccio a modificare questo passaggio
    codice:
    	if request.Form("bottone")="Salva" then
    		dim RSX, CNN, ConnString, query
    		ConnString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source =" & Server.Mappath("/mdb-database/ticket_gz.mdb")
    		set CNN = server.CreateObject("ADODB.CONNECTION")
    		CNN.open ConnString
    		set RSX = server.CreateObject("ADODB.RECORDSET")
    		query = "select * from ANA"
    		RSX.open query, CNN, 3, 3
    	
    			RSX.addnew
    			RSX("nome")= request.form("nome")
    			RSX("cognome")=request.form("cognome")
    			RSX("anno")= request.form("anno")
    			Session("id")=RSX("id")
    			RSX.update
    			response.Redirect("default.asp?azione=inserisci")
    					
    		RSX.Close
    		CNN.Close
    		set RSX = Nothing
    		set CNN = Nothing
    in modo da salvare nel capo id_atleta della tabella SPORT, l'id (chiava primaria di ANA)?

  7. #7
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Gio2011
    roba da 4a superiore

    praticamente lo script sarà:
    inserisco nome cognome e anno,

    ricerco per cognome

    scelgo a quale atleta associare lo sport

    ...(?)

    a questo punto ho il record in ANA selezionato, e quindi inserisco in SPORT l'id (chiave primaria in ANA) associato all'atleta?

    Fatto questo, come faccio a popolare ANA_SPORT?E' a questo punto che entra in gioco il join?Che aggrovigliamento di neuroni di prima mattina
    Allora, andiamo con ordine:
    Tu dovresti avere:
    Form 1: Anagrafica degli sport (un form dove gestisci esclusivamente l'anagrafica degli sport) - opererai con la tabella ANA
    Form 2: Anagrafica degli atleti (un form dove gestisci esclusivamente l'anagrafica degli atleti) - opererai con la tabella SPORT
    Form 3: Associazione atleti / sport (un form che selezionato un atleta ti consentirà di associare gli sport che pratica) - opererai con la tabella ANA_SPORT

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