Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Limit con Inner Join

Estas en el tema de Limit con Inner Join en el foro de Mysql en Foros del Web. Hola de nuevo Tengo una consulta sql con tablas multiples, con esta estructura: Cita: RECETAS(idReceta, TituloReceta, preparacion) INGREDIENTES(idIngrediente, nombreIngrediente) RECETA_INGREDIENTES(idReceta, idIngrediente, cantidad, unidadUsada(campo tipo Enum)) ...
  #1 (permalink)  
Antiguo 10/09/2012, 10:02
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Limit con Inner Join

Hola de nuevo

Tengo una consulta sql con tablas multiples, con esta estructura:

Cita:
RECETAS(idReceta, TituloReceta, preparacion)
INGREDIENTES(idIngrediente, nombreIngrediente)
RECETA_INGREDIENTES(idReceta, idIngrediente, cantidad, unidadUsada(campo tipo Enum))
y una consulta como la siguiente:

Código PHP:
SELECT 
FROM (`recetasINNER JOIN `receta_ingredientesON `recetas`.idReceta=`receta_ingredientes`.idReceta
INNER JOIN `ingredientesON `ingredientes`.idIngrediente=`receta_ingredientes`.idIngrediente
INNER JOIN unidades ON receta_ingredientes
.idUnidad=unidades.idUnidad LIMIT 0 ,10 
El caso que el limit, al estar dentro de la consulta con inner join, me devuelve un resultado por ingrediente de la siguiente forma



no siendo éste el resultado deseado.

Lo que necesito es que el resultado sea de 10 recetas con todos su ingredientes, por pagina.

Hay alguna forma de indicar con sql que el limit sea solo de la tabla recetas en vez de que lo pille de la consulta entera?

Muchas gracias a todos
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 10/09/2012, 10:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limit con Inner Join

¿Será esto lo que necesitas?:
Código MySQL:
Ver original
  1.     (SELECT * FROM `recetas` LIMIT 10) recetas R INNER JOIN `receta_ingredientes` RI ON R.idReceta = RI.idReceta
  2.     INNER JOIN `ingredientes` I ON RI.idIngrediente = I.idIngrediente
  3.     INNER JOIN unidades U ON RI.idUnidad = U.idUnidad;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 10/09/2012, 10:31
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Limit con Inner Join

Hola Gnzsoloyo.

Pues supongo que si sera esto, pero no puedo comprobarlo porque me devuelve el siguiente error en phpmyadmin:

Código PHP:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'R INNER JOIN `receta_ingredientes` RI ON R.idReceta = RI.idReceta INNER ' at line 3 
He estado pensando a ver si lo encontraba, o si tenia que ver con los parentesis por si son necesarios, pero no encuentro donde esta el error...

Gracias
__________________
Tecnología y tutoriales
  #4 (permalink)  
Antiguo 10/09/2012, 10:38
Avatar de jlct  
Fecha de Ingreso: abril-2012
Ubicación: Venezuela
Mensajes: 148
Antigüedad: 12 años
Puntos: 19
Respuesta: Limit con Inner Join

Lo que pasa es que le estan dando 2 alias a la consulta prueba de esta manera:
SELECT *
FROM
(SELECT * FROM `recetas` LIMIT 10) R INNER JOIN `receta_ingredientes` RI ON R.idReceta = RI.idReceta
INNER JOIN `ingredientes` I ON RI.idIngrediente = I.idIngrediente
INNER JOIN unidades U ON RI.idUnidad = U.idUnidad;

Espero asi te funcione!
  #5 (permalink)  
Antiguo 10/09/2012, 10:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Limit con Inner Join

Si, es cierto. Me quedó un alias-basura allí.
Código MySQL:
Ver original
  1.     (SELECT * FROM `recetas` LIMIT 10) R INNER JOIN `receta_ingredientes` RI ON R.idReceta = RI.idReceta
  2.     INNER JOIN `ingredientes` I ON RI.idIngrediente = I.idIngrediente
  3.     INNER JOIN unidades U ON RI.idUnidad = U.idUnidad;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 10/09/2012, 12:31
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: Limit con Inner Join

Perfecto!
Es precisamente eso lo que necesitaba!!!
Muchas gracias a los dos!
__________________
Tecnología y tutoriales

Etiquetas: join, limit, select, sql, tabla, tipo, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:08.