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

quiero hacer una consulta al mejor estilo de programcion

Estas en el tema de quiero hacer una consulta al mejor estilo de programcion en el foro de Mysql en Foros del Web. hola chicos que tal como estan, pues bueno estoy creando la estructura de un procedure. para ello primero halo las quieries necesarias. pero quiero hacer ...
  #1 (permalink)  
Antiguo 09/06/2015, 15:02
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
quiero hacer una consulta al mejor estilo de programcion

hola chicos que tal como estan, pues bueno estoy creando la estructura de un procedure. para ello primero halo las quieries necesarias. pero quiero hacer esto todo en mysql y nada en programcion de codigo (php, node, .net, etc).

tonces aca va el codigo y disuclpen la burradas si hay alguna.

Código MySQL:
Ver original
  1. --queria ver como validar si una consulta devuelve alguna cantidad en el resultado
  2. --pero no encontre como hacer eso, toco usar @repor
  3.  
  4. set @repor=0;
  5. select @repor:=id from reports where date=CONCAT(EXTRACT(YEAR FROM '2015-04-09'), '-', EXTRACT(MONTH FROM '2015-04-09')) AND type=2;
  6. select @repor;
  7. --si @repor=0 significa que la consulta es vacia
  8.  
  9. --parte que no encuentro como hacerla
  10. --pero la hago en forma de programación para que la entiendan
  11. --como digo todo esto es para poner en un procedure
  12.  
  13.  
  14. --no me funciona :(
  15. if(@repor=0,
  16.      --hacer una inserción,
  17.      --hacer una actualización
  18. );
  19.  
  20.  
  21.  
  22. --de esta forma si funciona pero no creo que pueda hacer un update dentro de un select,
  23. --la verdad estoy probando mientras
  24.  
  25.     WHEN (@repor=0) THEN 'Hacer una inserción'
  26.     ELSE 'actualizar'
  #2 (permalink)  
Antiguo 09/06/2015, 15:19
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: quiero hacer una consulta al mejor estilo de programcion

Mejor explica que quieres hacer....porque no se entiende tu logica....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 14/06/2015, 20:11
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: quiero hacer una consulta al mejor estilo de programcion

jajajja ok :D

me gustaria hacer una validación de si @repor=0 haga una insercion, pero si no lo es que haga una actualización.

la sentencia de actualizar/insertar no importa solo necesito como hacer el IF, en la linea 15 del codigo anterior esta lo que quiero hacer.

es una validación :D
  #4 (permalink)  
Antiguo 14/06/2015, 20:24
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: quiero hacer una consulta al mejor estilo de programcion

No te funciona la linea 15 porque estas escribiéndola como si quisieras usar la función IF(), cuando deberías usar el controlador de flujo IF...THEN.... ELSE.... END IF.
Por otro lado, todo lo que planteas hacer deberías colocarlo en un stored procedure, no en un script.

La función IF() no se usa para invocar sentencias, sino para devolver valores basados en una condición lógica:
Código MySQL:
Ver original
  1. IF(campo1 = 'valor', valorSiTrue, valorSiFalse)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 16/06/2015, 10:13
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 11 años, 4 meses
Puntos: 2
Respuesta: quiero hacer una consulta al mejor estilo de programcion

Osea que no es posible hacer una validación para hacer una inserción o un update?

como yo lo quiero hacer

despues de terminar el script, ahi lo pongo todo dentro de un procedure que se ejecutara cada cierto tiempo
  #6 (permalink)  
Antiguo 16/06/2015, 11:27
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: quiero hacer una consulta al mejor estilo de programcion

No puedes usar una función IF para ejecutar sentencias. Para eso se usan las estructuras de decision IF... THEN... ELSE, igual que en cualquier lenguaje de programación.
Creí que eso lo habías entendido. Me parece que es obvio que así como no puedes usar una función IIF() que existe en algunos lenguajes para ejecutar una sentencia llamada desde el valor devuelto por esa función, tampoco puedes usar una IF() de MySQL, ya que ese no es su uso.
Por favor, usa el manual de referencia para ver esos detalles: MySQL: IF()

Por otro lado, yo no dije que no se pueda usar una estructura IF.. THEN ... ELSE ... ENDIF, sino que no la puedes poner descolgada en un script, porque es una estructura que sólo tiene sentido en un SP.

Lo que tampoco le encuentro sentido es que me digas que primero crearás un script y loego lo "meterás" en un SP... ¿Por qué no creas directamente el SP y vas haciendo tus experimentos alli?

Cita:
despues de terminar el script, ahi lo pongo todo dentro de un procedure que se ejecutara cada cierto tiempo
Bueno, para eso MySQL tiene los EVENT, no necesariamente tienes que hacer un SP, aunque es una buena idea tener esa lógica separada.

Si haces un SP que contenga la lógica de este tipo:
Código MySQL:
Ver original
  1. CREATE PROCEDURE procedaltas(... los parametros que sean ...)
  2.   IF valorA = valorB
  3.    -- Realiza INSERT
  4.   ELSE
  5.     -- Realiza UPDATE
  6.   END IF;
no veo cual sería el problema...

Intentalo y veamos qué logras.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: estilo, quiero, select, sql
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 06:51.