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

Consulta en MySQL

Estas en el tema de Consulta en MySQL en el foro de Mysql en Foros del Web. Hola. Para aplicar los conocimientos de MySQL estoy intentando hacer una base de datos de recetas, donde pueda acceder a las recetas segun los ingredientes. ...
  #1 (permalink)  
Antiguo 07/04/2011, 12:00
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Consulta en MySQL

Hola.
Para aplicar los conocimientos de MySQL estoy intentando hacer una base de datos de recetas, donde pueda acceder a las recetas segun los ingredientes. Creo estar bien encaminado, pero llegue a un lugar en que no se como seguir, me trave!!

No estoy pidiendo nada hecho sino una orientación porque no se por donde viene la mano.

Estas son las tablas de las que necesito extraer datos:

NOMBRES_ALIMENTOS(id_nombre, id_alimento, nombre)
SUBCATEGORIAS_RECETAS(id_subcategoria, id_categoria, nombre, descripcion)
INGREDIENTES (id_receta, id_alimento, cantidad)

Nota: Los campos subrayados son los id_primarios y los que estan en cursivas son los indices_foráneos


Lo que quiero hacer es introducir varios ingredientes en la búsqueda y que me devuelva solamente las recetas que tengan exactamente esos ingredientes.

No tengo ni idea como hacer la consulta!!
¿Tendria que separar cada ingrediente y hacer una consulta a la BD para cada uno y despues comparar las recetas que tienen en comun?
Fue lo único que se me ocurrio!, pero me parece poco funcional!

Cualquier idea u orientación es bienvenida.

Estoy aprendiendo Mysql desde hace algun tiempo, voy estudiando un poco y tambien haciendo cosas para poder implementar y gravar la teoria....sino se me hace imposible aprender.

Entonces en esta lucha entre teoria y práctica, muchas vezes me encuentro en que quiero hacer algo en lo que todavia no tengo conocimientos suficientes.

Gracias por la atención
  #2 (permalink)  
Antiguo 07/04/2011, 18:42
Avatar de xtimed  
Fecha de Ingreso: julio-2009
Ubicación: BCN - México
Mensajes: 226
Antigüedad: 14 años, 8 meses
Puntos: 41
Respuesta: Consulta en MySQL

Ammmm, no soy un experto en MySQL pero tengo una nocion de lo que quieres aser

Para empezar no entendi la relacion que tienen las tablas, asi que voy a poner un ejemplo mas o menos como creo que deberia ser:

ALIMENTOS(id_alimento, nombre, id_recetas)
RECETAS(id_recetas, nombre, descripcion, id_ingredientes)
INGREDIENTES(id_ingredientes, id_recetas, ingrediente)

SELECT A.nombre, R.nombre, R.descripcion FROM RECETAS as R, ALIMENTOS as A WHERE R.id_recetas in (SELECT id_recetas FROM INGREDIENTES WHERE ingrediente = "Ingrediente");

Algo asi creo que seria, lo mas probable es que esté equivocado pero de algo te debe ayudar.
  #3 (permalink)  
Antiguo 07/04/2011, 19:29
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Consulta en MySQL

Tenes razón no se entiende porque puse mal las tablas


Estas son las tablas que participan de la búsqueda:

ALIMENTOS ( id_alimento, valor nutricional, categoría, imagen)

NOMBRES_ALIMENTOS(id_nombre, id_alimento, nombre)

RECETAS (id_receta, nome, preparado, tiempo, porciones, imagen)

INGREDIENTES (id_receta, id_alimento, cantidad)


-La tabla nombre alimentos existe para crear sinonimos de nombres de alimentos
-La tabla ingredientes esta por que la relación de recetas y alimentos es de muchos a muchos.

El problema es lograr que se puede introducir en la búsqueda 2 o 10 ingredientes por dar un ejemplo y que encuentre las recetas que tengan exactamente esos ingredientes.

Gracias por tu aporte xtimed ....ni sabia que se podia hacer una consulta dentro de otra como hiciste ahi, asi que ya ves yo soy menos experto que tu . Voy a investigar por ese lado.

Igual si se te ocurre otra idea es bienvenida........

No importa que no seas experto, vale la predisposición y la buena onda, gracias!

Etiquetas: Ninguno
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 15:32.