Newsgroup: it.comp.www.asp
Titolo: Query trasferimento dati tra tabelle

Devo fare una cosa un pò delicata con le tabelle del mio database, che
non ho mai fatto, e vorrei un piccolo aiuto :)
Ho un sito di un clan che distingue i giocatori in base al gioco
fatto.
Ho creato delle nuove tabelle nel mio database.
In pratica prima c'era una tabella degli Utenti dove c'era un campo
con memorizzato il codice del gioco fatto dall'utente.
Prima veniva solamente scritto il codice del gioco nella tabella
Utenti, nell'apposito campo.
Adesso però ho creato una tabella Giochi dove sono contenute
informazioni su ogni gioco.
Ho creato inoltre la tabella Giochi_Players con attributi UserID e
Gioco.
In quest'ultima memorizzo tutti i giochi fatti da ogni player.
Adesso però dovrei creare i record in Giochi_Players in base ai dati
già esistenti nella tabella Utenti (nell'attributo Gioco_fatto).
In pratica devo fare una query che per ogni utente "Tizio" che ha
l'attributo impostato sul gioco "Gioco1" crei una entry in
Giochi_Players:
Tizio	|	Gioco1	|
Però non ho idea di come fare.
Non ho mai fatto query di sincronizzazione di due tabelle.
Non vorrei fare danni :(
Mi date un paio di suggerimenti? :)
Lo posso fare solamente con una query od ho bisogno anche di codice
ASP che gestisca le operazioni?
Grazie mille! :D

Io ho provato a creare questa funzione ASP.
Guardate se ha senso. L'ho fatta in 5 minuti e sono molto inesperto
quindi non fate caso alla bruttezza. :-P
Tanto la devo usare solamente una volta. Però mi dovete dire se
funzionerà
Nella tabella utenti il campo Gioco può assumere 1, 2 e 12 che
significa Gioco1, Gioco2 ed Entrambi i giochi. Quando avrò finito
questa query di trasferimento eliminerò l'attributo Gioco dalla
tabella Utenti.
[CODE]
----------------------------------------------------
....
<%
<!--#include file="sub.asp"-->
sub Aggiorna
	Dim	Rs, Cn, slq, gioco, TwoGames
 
	sql = "SELECT * FROM TbUtenti ORDER BY [Membro]"
 
	Call AproConnessione(StrConn,Cnm)
	set Rs = Cn.execute(sql)
	while not rs.eof
		TwoGames = False
		if rs("Gioco") = "1" Then //Gioco 1
			gioco = "1"
		end if
		if rs("Gioco") = "2" Then //Gioco 2
			gioco = "2"
		end if
		if rs("Gioco") = "12" Then //Gioco 1 e 2
//Mette il Gioco 1 come predefito e poi aggiungerà anche il gioco 2
			gioco = "1"  
			TwoGames = true
		end if
		if rs("Gioco") = "" Then //Nessun Gioco
			gioco = ""
		end if
 
		sql = "INSERT INTO TBgiochi_players [UserID, Gioco]
VALUES ('" & rs("UserID") & "'," & gioco & ")"
		if TwoGames Then
			sql = "INSERT INTO TBgiochi_players [UserID,
Gioco] VALUES ('" & rs("UserID") & "', 2)"
		End if
		rs.movenext
	wend
	rs.close
	set rs = nothing
	Call ChiudoConnessione(Cnm)	
end sub
call Aggiorna
%>
....
----------------------------------------------------
[/CODE]
Che dite? Va bene?
Non pretendo che capiate tutto. Mi basta che mi sappiate dire se più o
meno è corretta e la posso usare ;)
Grazie mille! 

 meno è corretta e la posso usare
A occhio sembra che possa funzionare, a parte la "laboriosità". Te la
potevi cavare direttamente in Access con una query SQL del tipo
INSERT INTO utente_gioco ( utente, gioco )
    SELECT 
temp.id
, temp.gioco
    FROM
        [SELECT 
utenti.id
, 1 AS gioco
        FROM utenti
        WHERE ((gioco="1") or (gioco="12"))
        union
        SELECT 
utenti.id
, 2 AS gioco
        FROM utenti
        WHERE ((gioco="2") or (gioco="12"))]. AS temp;
ovviamente sistemando i nomi delle tabelle e dei campi...
Alex.
-- 
___________________________________________________________
a p bertolini
(Tribù Digitale Blackmambo: 
www.blackmambo.it
)