Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Hola chicos, la verdad es que no se si llego a expresarme bien por lo compejo que me llega a parecer mi consulta, despues de mucho investigar todavia me encuentro mas perdido, expongo mi problema: Yo tengo un BBDD con una tabla que se llama RECETAS, en las cuales hay varios campos entre ellos ingrediente1, ingrediente2, ingrediente3 asi hasta el 12 porque creo que como cocinero 12 ingredientes es suficiente y tengo otra tabla que se llama INGREDIENTES donde guardo mis ingredientes, la cosa es que en mi tabla RECETAS en los campos ingrediente1, ingrediente2, ingrediente3 yo guardo una valor integer que es la id de dicho ingrediente, el problema es que no soy capaz de hacer una consulta donde enlazar la tablas RECETAS con la tabla INGREDIENTES cuando hay mas de un ingrediente.
No se si he sido capaz de exponer bien mi duda pero me estoy volviendo loco con el Join, Inner Join, Join On, etc. Otra vez vuelvo agradecerles vuestra ayuda sabiendo que esta consulta no es bien bien un tema sobre gambas sino mas un temas sobre consultas SQL.
Muchas gracias, Un Saludo.
 



 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
aratar79

Por lo que me dices, mas o menos tu tendrias un esquema de base de datos asi....
 esquema_recetas


En mi programa recolector, puede ver mi esquema,

esquema-de-tablas-en-recolector


Echale un vistaso al codigo fuente, que veras como se puede hacer...
Enlace


Por otro lado...
Citar:
hasta el 12 porque creo que como cocinero 12 ingredientes es suficiente

Creo que eso es un "grave" error... ¿y si mañana tienes 13 ingrediente? ¿tiras el programa?.... lo suyo es que acepte cualquier numero de ingredientes... tiene que pensar mejor como diseñar tu base de datos....

A lo mejor te puede ayudar este esquema que se me ocurre....
 recetatablasingredientes
Tendrias 3 tablas:
Una con las Recetas: campos IdRecetas y NombreDeReceta

Otra con los ingrediente: campo IdIngrediente y NombreDeIngrediente

Y otra donde se relaciona, el IdRecetas y el IdIngrediente...

Asi puedes poner muchos ingredientes en la misma receta sin ningun tipo de limite....

Fijate que yo tengo hecho lo mismo en mis tablas: Articulos / Tags / ListaTags
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Sabado, 15 Septiembre 2012, 09:54; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Hola Chicos, muchas gracias Julio, la verdad no lo habia pensado así, ahora mismo le he hecho un ojo a las consultas de tu programa. Yo para superar ese error sobre las 12 o 13 le habia dado al programa la posibilidiad de crear una receta como ingrediente, es decir: Si yo tengo una salsa de tomate la cual voy a usar en un arroz a la cazuela, primero escandallo la salsa de tomate la creo como receta pero antes de grabar la receta pregunto ¿ Es ingrediente ? si es que si guarda un registro en la tabla ingredientes asi al crear la receta arroz a la cazuela tengo la posibilidad de usar la salsa de tomate como ingrediente sabiendo ya el precio de coste, dicho esto, tu idea es mucho mas buena ya que asi puedo crear infinifad de ingredientes en una receta. Muchas gracias me pongo a ello volando, pensar bien antes como vas a diseñar tu base de datos ahora veo que si que es muy importante.

Un saludo.
 



 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Julio, sabiendo que tu opción es mejor y estoy peleando con eso dejo colgado las solución a mi pregunta por si alguien se encuentra en el mismo caso:

SELECT r.NombreReceta, i1.descripcion AS indrediente1,
                                         i2.descripcion AS ingrediente2,
                                         i3.descripcion AS ingrediente3
                                         FROM recetas AS r
                                         INNER JOIN ingredientes i1 ON r.ingre1 = i1.ID_ingrediente
                                         INNER JOIN ingredientes i2 ON r.ingre2 = i2.ID_ingrediente
                                         INNER JOIN ingredientes i3 ON r.ingre3 = i3.ID_ingrediente;
 

Un saludo y muchas gracias.
 



 
última edición por aratar79 el Domingo, 16 Septiembre 2012, 05:06; editado 2 veces 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
MMMM :(, Esta consulta solo funciona si hay datos en los campos ingradientes, asi que si es mejor de todas todas crear 3 tablas.
 



 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Perdón Julio, llevos 5 dias dandole vueltas a los de las tres tablas y mirando el codigo de tu programa y no he sido capaz, no se como guardar los datos y menos como recuperarlos, sigo con ello creo que necesito un empujoncito o un descanso a ver si después lo veo un poco mas claro.
Gracias y un saludo.
 



 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Aqui viene el empujoncito....
Citar:
no se como guardar los datos y menos como recuperarlo


Supongo que te refieres a trabajar con la tabla de Relacion Receta Ingrediente ¿no? Si no es eso dimelo, porque si es asi, tengo que partir la explicacion desde mas atras.

Resolviendo la forma de trabajar con la Tabla Relacion Recetas-Ingredientes:
Te explico el proceso, con un poco de codigo y comentarios, tendras que hacer varias funciones....

El codigo fuente de donde me baso es el del programa Recolector ( Enlace )

1. Añadir ingrediente a una receta: un Añadir relación en Tabla Receta_Ingrediente
Parto de tener un idReceta y  los ingredientes separados por comas: "arroz,judías,tomate"-> cadenaDeIngrediente

Función  InsertarArticulo

1.1 Creo un array de cadenas con los ingrediente….
Dim ingrediente as new string[]
ingrediente=Split(upper$(cadenaDeIngrediente),",") ‘los pongos todos en mayúsculas (para no tener problemas con las minúsculas/mayúsculas)
 


1.2 Compruebo si existe ingrediente en la tabla de ingredientes…
For a=0 to ingrediente.count-1
' lo repito por cada ingrediente obtenido

Sentenciasql="Select  * from TablaIngredientes  where NombreIngrediente='"& ingrediente[a] & "'"

varResult=conexion.exec(SentenciasSql)

'si no existe un ingredient, lo añado

 if varResult.count=0 then

'creo una nueva clave IdIngrediente…

hidIngrediente=str$(now)) & str$(a)
'Nota: Creando un Id único: cojo la fecha de actual y le añado un numero, asi siempre sera distinto Id. Este es el método que yo uso, (no es el mejor). Hay otra forma que es llevar un campo numerico y se le añada al valor maximo una unidad. En el foro encontraras un post que lo comenta

'inserto ingrediente, con su tag
Else
 'En caso contrario….(si existe ingrediente en la tabla)
 'me quedo con el hid que tenga..

HidIngrediente=varResult!idIngrediente

EndIf

'añado relación a la tabla de relaciones….creo la sentencia…

'Como Tendo el idReceta y el hidIngrediente

 sentenciaSql=”insert into tablaRelacion (idReceta,IdIngrediente) Values ('"

               sentenciaSql &=idReceta

                sentenciaSql &="'," & hidIngrediente & "') "

               'inserto relación…

              varResult=conexión.exec(SentenciaSql)

next


2. Mostrar una receta y sus ingrediente….
Tenemos un IdReceta…

sentenciaSql="Selet * from TablaIngrediente  where idIngrediente in (select idIngrediente from TablaRelacion where id='" & idReceta & "')"

varResult=conexion.exec(sentenciaSql)

'por cada resultado, añadir texto de ingrediente…

for each varResult

if textoIngrediente="" then

         ' primer ingrediente.

textoIngrediente= varResult!DescripcionIngrediente

else

textoIngrediente&= ", " & varResult!DescripcionIngrediente

endif

next


3. Borrado de un ingrediente de una receta: Borrar una relación de la TablaReceta_Ingrediente

Tenemos un IdReceta el cual tiene un NombreIngrediente que queremos borrar…

3.1) Obtener el idIngrediente de la tabla Ingrediente

3.2) Nos vamos a la tabla de relación… buscamos todos los resultados que:

TengoIdreceta y además IdIngrediente,

Y los borramos…

sentenciaSql="Delete from Relacion where idReceta='" & idrecetaeditada  & "' And idIngrediente='" & Idingredienteoptenido & "'")

 


Te pongo el código (pero no esta completo) para que te hagas una idea, mirate el codigo del programa del Recolector que este si funciona completamente.


Nota:
En un post anterior, comentas que una receta puede contener otras recetas... Para darle solución a este dato, puede añadir otra Tabla donde relaciones IdRecetas con otra IdRecetas, y se trabajaria como en el caso anterior... Primero resuelve la parte de Recetas-Ingrediente, y cuando la soluciones, añade esta tabla y su codigo.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 20 Septiembre 2012, 08:45; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Julio, el coloreado del código que has puesto está mal porque las comillas simples y dobles que has usado no corresponden a las normales. Quizás hayas pegado el código desde Writer u otro programa.
Si puedes lo cambias, si no ya lo hago yo cuando tenga un rato, tampoco es muy importante.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
ok, corregido, asi queda mas claro.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Gracias Julio, me he tomado unos dias de descanso me pongo a ello volando, me acabo de dar cuenta que mi aplicación esta muy mal planteada, no se puede empezar la casa por el tejado.

Un Saludo.
 



 
aratar79 - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Como Hago Para Validar Dos Campos En Una M... jousseph General 12 Martes, 06 Julio 2010, 19:24 Ver último mensaje
jguardon
No hay nuevos mensajes Verificar Campos De Tablas Fenriz07 Bases de Datos 4 Domingo, 15 Agosto 2010, 14:34 Ver último mensaje
netking86
No hay nuevos mensajes Consulta Mysql Con Variable En Tabla pittusa Bases de Datos 2 Domingo, 12 Diciembre 2010, 12:42 Ver último mensaje
jguardon
No hay nuevos mensajes Como Hacer Una Consulta Y Filtrar Los Resu... willyanjose Bases de Datos 2 Martes, 02 Agosto 2016, 13:42 Ver último mensaje
willyanjose
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron