Tengo un problema que por más vueltas y lecturas no logro comprender por que se origina
Tengo una tabla "Jugadores"
con los valores pk:
1
2
3
4
5
6
Ejecuto este insert en mi tabla "rondas"
Código:
insert into rondas (jugador, oponente,id_torneo,numero_ronda) select top 50 percent id_jugador,null,id_torneo,@Ronda from jugador where tipo=0 and id_torneo= @torneo and id_jugador not in ( select jugador from rondas where id_torneo=@torneo and numero_ronda=@Ronda ) and id_jugador not in (select oponente from rondas where id_torneo=@torneo and numero_ronda=@ronda) order by id_jugador
Es decir, traigo la mitad de los registros en jugadores y los inserto en el campo "Jugador"
Ahora ejecuto este otro query:
Código:
Para que a cada registro insertado en ronda, lo actualice en el campo oponente con un pk de Jugador que no se haya insertado en el primer queryupdate rondas set oponente = id_jugador from jugador j where tipo=0 and j.id_torneo= @torneo and oponente is null and numero_ronda=@Ronda and j.id_jugador not in (select jugador from rondas where id_torneo=@torneo and numero_ronda=@Ronda) and rondas.id_torneo=@torneo
Mi idea es obtener en rondas estos valores
Código:
Pero lo que obtengo es estoJugador Oponente 1 4 2 5 3 6
Código:
Y el pk 6 no lo inserta nunca! alguien que me pueda ayudar a ver donde está mi error por favor :( siempre me duplica un valor. mi tabla siempre tendrá registros pares. :( no me importa el orden en que queden asignados, podría quedar en jugador 1,5,3 contra 6,4,2 en fin da igual la asignación, solo quiero que quede bien :) Jugador Oponente 1 4 2 5 3 4
Gracias.