Foro de elhacker.net

Programación => 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
  1. 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)
  2. INNER JOIN carrera AS c ON (c.id_jugador=j.id_jugador)
  3. WHERE c.id_carrera=1 (SELECT top 5 * FROM carrera)
  4. 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;