Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: Mr.Blue en 10 Agosto 2011, 01:37 AM

Título: ayuda con consulta sql
Publicado por: Mr.Blue en 10 Agosto 2011, 01:37 AM
Código (sql) [Seleccionar]
select a.nombre_animal, j.id_jugador, c.id_carrera from animal as a inner join jugador as j on( a.id_animal=j.id_animal)
inner join carrera as c on (c.id_jugador=j.id_jugador)
where c.id_carrera=1 (select top 5 * from carrera)
order by posc;


Lo que hace esta consulta es darme el nombre e id del jugador y quiero obtener un top 5 de los primeros 5 jugadores, me tira error en el in cuando ago where c.id_carrera=1.

Incorrect syntax near the keyword 'in'.
Título: Re: ayuda con consulta sql
Publicado por: Shell Root en 10 Agosto 2011, 03:05 AM
No entiendo ese 1 para qué si estas haciendo el SELECT para las 5 carreras.
Título: Re: ayuda con consulta sql
Publicado por: bomba1990 en 10 Agosto 2011, 04:51 AM
SELECT a.nombre_animal, j.id_jugador, c.id_carrera FROM animal AS a INNER JOIN jugador AS j ON( a.id_animal=j.id_animal)
INNER JOIN carrera AS c ON (c.id_jugador=j.id_jugador)
WHERE c.id_carrera in (SELECT top 5 * FROM carrera)
ORDER BY posc;

NO deberia ser asi??  :huh:
Título: Re: ayuda con consulta sql
Publicado por: Mr.Blue en 14 Agosto 2011, 05:38 AM
por que mi primary key no es auto incrementable visualmente mi tabla es asi

id_carrera  id_jugador     posicion
1                   1                  3
1                   2                  1
1                   3                  2
1                   4                  4
Título: Re: ayuda con consulta sql
Publicado por: fran800m en 16 Septiembre 2011, 23:23 PM
SELECT top 5 a.nombre_animal, j.id_jugador, c.id_carrera FROM animal AS a INNER JOIN jugador AS j ON( a.id_animal=j.id_animal)
INNER JOIN carrera AS c ON (c.id_jugador=j.id_jugador)
WHERE c.id_carrera=1
ORDER BY posc;

Creo que lo que quieres es ésto, tu consulta me extraña mucho, no tiene in y ademas para usar un in no puedes usar asterisco, sino el campo concreto.

Si usas MySQL sería

SELECT a.nombre_animal, j.id_jugador, c.id_carrera FROM animal AS a INNER JOIN jugador AS j ON( a.id_animal=j.id_animal)
INNER JOIN carrera AS c ON (c.id_jugador=j.id_jugador)
WHERE c.id_carrera=1
ORDER BY posc limit 5;