Ordenar nombres en orden alfabético utilizando correlacion
Publicado por Fernando (2 intervenciones) el 24/07/2017 16:24:31
Buenas,
Necesito me den una mano con este problema. Me piden ordenar en forma alfabetica los nombres de los jugadores que menores goles tienen el la tabla Goleadores de la BD. En dicha tabla esta solo el documento del jugador, por lo que realice un join con la tabla jugadores para ver los nombres de los mismos. El tema es que no me permiten usa el "ORDER BY", lo tengo que hacer por correlacion. si tengo pocos jugadores en la tabla goleadores no hay problema, pero cuando tiene muchos y con goles en cero no me funciona.
el script que hice es el siguiente:
/*2* Funcion
Definir una funcion fn##### que:
Reciba un Id_Club y una categoria
Identificar y retornar al primer jugador por orden alfabetico que cumpla con las restricciones:
- Pertenecer al club y categoria indicada
- Tener la menor cantidad de goles en la tabla de goleadores
El primer jugador por orden alfabetico debe efectuarse correlacionando, no ordenando la consulta*/
Las tablas son:
Jugadores
Tipo_Doc (pk)
Nro_Doc (pk)
Nombre
Fec_Nac
Categoria
Id_Club
Goleadores
Id_Goleador(pk)
Tipo_Doc
Nro_Doc
Id_Partido
Minuto
cantgoles
Partidos
Id_Partido(pk)
Id_ClubL
Id_ClubV
GolesL
GolesV
Espero me puedan ayudar.
Gracias
Necesito me den una mano con este problema. Me piden ordenar en forma alfabetica los nombres de los jugadores que menores goles tienen el la tabla Goleadores de la BD. En dicha tabla esta solo el documento del jugador, por lo que realice un join con la tabla jugadores para ver los nombres de los mismos. El tema es que no me permiten usa el "ORDER BY", lo tengo que hacer por correlacion. si tengo pocos jugadores en la tabla goleadores no hay problema, pero cuando tiene muchos y con goles en cero no me funciona.
el script que hice es el siguiente:
/*2* Funcion
Definir una funcion fn##### que:
Reciba un Id_Club y una categoria
Identificar y retornar al primer jugador por orden alfabetico que cumpla con las restricciones:
- Pertenecer al club y categoria indicada
- Tener la menor cantidad de goles en la tabla de goleadores
El primer jugador por orden alfabetico debe efectuarse correlacionando, no ordenando la consulta*/
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if exists(select * from sysobjects where name='fn_primer_jugador' and type='FN')
drop function dbo.fn_primer_jugador
CREATE FUNCTION dbo.fn_primer_jugador (@idClub int, @cat int)
RETURNS int
AS
BEGIN
DECLARE @dni int
select @dni = j.Nrodoc from (select * from jugadores where Id_Club=@idClub and Categoria=@cat) j inner join
goleadores g on j.Nrodoc=g.Nrodoc where j.Nombre = any(select j1.Nombre from (select * from
jugadores where Id_Club=@idClub and Categoria=@cat) j1 inner join goleadores g1 on
j1.Nrodoc=g1.Nrodoc where g.Nrodoc=g1.Nrodoc and g1.cantgoles=(select min(g2.cantgoles)
from Goleadores g2 where j1.id_club=@idClub and Categoria=@cat))
RETURN @dni
END
GO
Las tablas son:
Jugadores
Tipo_Doc (pk)
Nro_Doc (pk)
Nombre
Fec_Nac
Categoria
Id_Club
Goleadores
Id_Goleador(pk)
Tipo_Doc
Nro_Doc
Id_Partido
Minuto
cantgoles
Partidos
Id_Partido(pk)
Id_ClubL
Id_ClubV
GolesL
GolesV
Espero me puedan ayudar.
Gracias
Valora esta pregunta
0