Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 2 de 3
Ir a la página Anterior  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 Re: Consulta Mysql Donde Una Tabla Tiene Varios Campos Que Llaman A Una Misma Tablas 
 
Hola Julio, he estado mirando como creas los id con la fecha y me gustaria preguntar si el sistema que yo uso es valido o no. yo hago una consulta que me devuelve el valor maximo del campo id que es "INT UNSIGNE AUTO_INCREMENT PRIMARY KEY" y le sumo uno asi tengo el id de la receta, es correcto?

dim idResReceta as integer

$result = mod.Con$.Exec("Select MAX(ID_Receta) as ID_Receta from recetas")
idResReceta = $result!ID_Receta + 1
 

 



 
última edición por aratar79 el Lunes, 24 Septiembre 2012, 02:32; editado 1 vez 
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 
 
al final la introducción de recetas la he dejado asi:

ModCon.$con.Begin()
 $result = ModCon.$con.Create("recetas")
 $result!NombreReceta = TextBox1.Text
 $result!Elaboracion = TiposEl
 $result!Conservacion = TiposCon
 $result!Temp = TempSe
 $result!Plato = TiposPl
 $result!Dificultad = TiposDif
 $result!Maquinaria = TiposMaq
 $result!ingrediente = FALSE
 $result!info = txtAinfo.Text
 $result!notas = TextArea2.Text
 $result!instruciones = TextArea3.Text
 $result!raciones = vbnumRacion.Value
 $result!pvp = vbPvP.Value
 $result!pvc = vbPvPpRaciones.Value
 $result!pvcIva = vbCoste.Value
 $result!porcentaje = vbPorcentaje.Value
 $result.Update()
 Try ModCon.$con.Commit()
     If Error Then
         Message.Error("La receta no ha podido crearse, " & Error )
         IntroducirPlatos.Close()
     Else
          idResult = ModCon.$con.Exec("select MAX(ID_Receta) as ID_Receta from recetas")
          idResRecetas = idResult!ID_Receta
          For bucle = 0 To ingredientes.Count
              If ingres[bucle] > 0 Then
                 idRsql = "insert into RelacionRecetasIngredientes (idReceta, idIngrediente, cantidad) values ('" & idResRecetas & "','" & ingres[bucle] & "','" & cantidad[bucle] & "')"
                $result = ModCon.$con.Exec(idRsql)
              Endif
           Next
           preg = Message.Question("La receta se ha creado con exito, desea crear otra", "Si", "No")
              If preg = 1 Then
                ReiniciarFormulario(IntroducirPlatos)
              Else
                IntroducirPlatos.Close()
              Endif
     Endif
 

 



 
última edición por aratar79 el Lunes, 24 Septiembre 2012, 04:15; editado 5 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 
 
aratar79:

Si es un buen método (creo que el mejor), hallar el máximo valor y añadirle una unidad...... pero tengo una duda....

Si lo pones como  AUTO_INCREMENT, el mismo se debe de incremetar una unidad.. por lo tanto no haria falta...
idResReceta = $result!ID_Receta + 1' no haria falta sumarle 1


Si embargo en el codigo que pones en el siguiente post, ya no lo tienes puesto  (el +1).....
idResult = ModCon.$con.Exec("select MAX(ID_Receta) as ID_Receta from recetas")
         idResRecetas = idResult!ID_Receta


Me queda esa duda... es simplemente, hacer una comprobación...que cuando ingresas un nuevo registro, este coge el Idmaximo y le añade un valor 1. Para "quedarnos" tranquilos de que hace lo que realmente buscamos,y no coja solo el máximo (repiteria valores...)

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Lunes, 24 Septiembre 2012, 19:37; 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 
 
Si si tienes razón primero lo pense así con el +1 por que había pensado grabar el registro antes de grabar la receta, después de pensarlo 2 veces vi que era mejor grabar el registro en la tabla relación después de grabar la receta, asi que ya no me hacia falta el +1, por cierto ahora me acabo de dar cuenta que al crear el campo cantidad en la tabla de relaciones, ya que el ingrediente es importante su cantidad ya no soy capaz de hacer la consulta
 



 
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 
 
Citar:
por cierto ahora me acabo de dar cuenta que al crear el campo cantidad en la tabla de relaciones, ya que el ingrediente es importante su cantidad ya no soy capaz de hacer la consulta


¿cual consulta? ¿inserción, borrado, editado?
 




===================
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 
 
Ups cierto, veras, cuando hago :
Código: [Descargar] [Ocultar]
  1. Select NombreReceta, descripcion from ingredientes,recetas  where ID_ingrediente in (select idIngrediente from RelacionRecetasIngredientes where idReceta = 1) ' 1 por dar un id de una Receta, me vuelve  
  2. +-----------------+-----------------------------------+  
  3. | NombreReceta    | descripcion                       |  
  4. +-----------------+-----------------------------------+  
  5. | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |  
  6. | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |  
  7. | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |  
  8. | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |  
  9. +-----------------+-----------------------------------+  
  10.  

Bueno hasta aqui todo bien, mi problema es cuando quiero averiguar la cantidad que pongo en la receta de cada ingrediente:
Código: [Descargar] [Ocultar]
  1. Select NombreReceta, descripcion, cantidad from ingredientes,recetas,RelacionRecetasIngredientes  where ID_ingrediente in (select idIngrediente from RelacionRecetasIngredientes where idReceta = 1);  
  2. +-----------------+-----------------------------------+----------+  
  3. | NombreReceta    | descripcion                       | cantidad |  
  4. +-----------------+-----------------------------------+----------+  
  5. | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |   150.00 |  
  6. | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |   300.00 |  
  7. | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |   100.00 |  
  8. | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |    50.00 |  
  9. | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |   150.00 |  
  10. | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |   300.00 |  
  11. | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |   100.00 |  
  12. | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |    50.00 |  
  13. | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |   150.00 |  
  14. | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |   300.00 |  
  15. | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |   100.00 |  
  16. | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |    50.00 |  
  17. | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |   150.00 |  
  18. | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |   300.00 |  
  19. | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |   100.00 |  
  20. | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |    50.00 |  
  21. +-----------------+-----------------------------------+----------+  
  22.  

me devuelve todas las cantidades porque no se como hacer la conculta, se que me falta algo en el where pero no hay manera.

Gracias como siempre por tu ayuda y gracias a todos.
Un Saludo.
 



 
última edición por aratar79 el Miercoles, 26 Septiembre 2012, 03:19; editado 1 vez 
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:

Prueba con esta sentencia:

select cantidad,nombreingrediente from ingrediente natural join
(select * from Trelacion where idreceta="1")



Puedes ver mas información de natural join en: Enlace

Nota: 1 seria el idreceta

recetas.zip
Descripción: Base de datos sqlite de 3 tablas, para recetas, incredientes, relaciones entre ellas y cantidades. 
Descargar
Nombre del archivo: recetas.zip
Tamaño: 472 Bytes
Descargado: 12 veces
recetas.zip
Descripción: Base de datos sqlite de 3 tablas, para recetas, incredientes, relaciones entre ellas y cantidades. 
Descargar
Nombre del archivo: recetas.zip
Tamaño: 472 Bytes
Descargado: 12 veces
recetas.zip
Descripción: Base de datos sqlite de 3 tablas, para recetas, incredientes, relaciones entre ellas y cantidades. 
Descargar
Nombre del archivo: recetas.zip
Tamaño: 472 Bytes
Descargado: 12 veces

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Miercoles, 26 Septiembre 2012, 17:42; 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 
 
Gracias Julio, me pongo con ello volando, y gracias por el enlace creo que me voy a sumergir unos dias en un curso sql ;-).
Esta consulta me da error en el mysql y en sqlite si funciona pero bueno da igual lo importante es el concepto.
Código: [Descargar] [Ocultar]
  1. select cantidad, descripcion from ingredientes natural join (select * from RealacionRecetasIngredientes where idReceta = 1);  
  2. ERROR 1248 (42000): Every derived table must have its own alias  
  3.  

creo que tiene que ver con algo de los alias
Lo que yo no tenia claro y corrígeme si me equivoco es si puedo tener 2 resultados, me explico, puedo por una parte tener un resultado que sea
Código: [Descargar] [Ocultar]
  1. mysql> Select ID_Receta,NombreReceta, descripcion from ingredientes,recetas  where ID_ingrediente in (select idIngrediente from RelacionRecetasIngredientes where idReceta = 1) and ID_Receta = 1;  
  2. +-----------+-----------------+-----------------------------------+  
  3. | ID_Receta | NombreReceta    | descripcion                       |  
  4. +-----------+-----------------+-----------------------------------+  
  5. |         1 | RECETA PRUEBA 1 | BERENJENA LARGA EXTRA             |  
  6. |         1 | RECETA PRUEBA 1 | ATUN ACEITE VEGETAL 1K PESCAMAR   |  
  7. |         1 | RECETA PRUEBA 1 | TOMATE CHERRY JARDIN ROJO BANDEJA |  
  8. |         1 | RECETA PRUEBA 1 | CARNE PICADA TERNERA 100 %        |  
  9. +-----------+-----------------+-----------------------------------+  
  10. 4 rows in set (0.00 sec)  
  11.  

y por otra parte puedo tener otro resultado que sean las cantidades, los ingredientes y las recetas y relacionarlos desde gambas o eso es poco elegante y hay que buscar una consulta que me de un solo resultado?
Bueno no se me pongo con ello creo, que voy a dejar unos dias mi proyecto gambas y me voy a meter bien a fondo con el sql que la verdad me motiva a saco este tema.
Muchas gracias Julio y un Saludo a todos.
 



 
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:
Citar:
Esta consulta me da error en el mysql y en sqlite si funciona pero bueno da igual lo importante es el concepto.

En este foro comentan la solucion en MySql, añadiendo Alias

http://www.forosdelweb.com/f86/consulta-sql-999285/

Creo que deberia quedar asi:

select cantidad, descripcion from ingredientes natural join (select * from RealacionRecetasIngredientes where idReceta = 1) Alias;


Pruebalo a ver si asi no te da el error.

Citar:
Lo que yo no tenia claro y corrígeme si me equivoco es si puedo tener 2 resultados, me explico, puedo por una parte tener un resultado que sea


Supongo que si, sera añadiendo el operador "OR" a la sentencia.
Por ejemplo, de esta forma, se podria mostrar los ingredientes de la receta con idreceta=2, y idreceta=1

select cantidad, descripcion from ingredientes natural join (select * from RealacionRecetasIngredientes where (idReceta = 1 or idReceta = 2  ) Alias;


Pruebalo porque no la he podido confirmar..
O tambien se podrian unir los resultados de dos consultas... seguro que hay muchas posibilidades.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Jueves, 27 Septiembre 2012, 13:47; 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 
 
Mira, desconozco que estructura tiene tu base ni como cargas las recetas, pero supongo que tienes un campo "cantidad_de_porciones" que relaciona los ingredientes con las cantidades de cada uno en la receta.¿Por que no guardas en las recetas directamente los ingredientes en lugar de usar un id_ingrediente? Incluso podrías tener una receta básica y cuando la recuperas usar un factor multiplicador de acuerdo a la cantidad de porciones a realizar.
Tendrías una tabla ingredientes y otra recetas con un ID autoincrementable y campos ingrediente1, cantidadingrediente1,ingrediente2, cantidadingrediente2 y así sucesivamente. Podrías cargar los ingredientes en comboboxes para ir seleccionando los que necesites cargar en cada receta para facilitar la introducción de datos. Son simplemente sugerencias. Si subes un archivo comprimido con lo que tengas hecho me comprometo a verlo para poder darte una mejor ayuda.
Saludos
 




===================
Migrando desde visual basic, el Gambas de Ms
Mi blog gambero
 
Dani26 - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
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 2 de 3
Ir a la página Anterior  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