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

duda con if

Estas en el tema de duda con if en el foro de Mysql en Foros del Web. buenas noches, espero estén bien, he estado leyendo sobre if en mysql y he encontrado que uno puede poner dentro del if tres condiciones una ...
  #1 (permalink)  
Antiguo 24/07/2013, 19:28
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
duda con if

buenas noches,

espero estén bien, he estado leyendo sobre if en mysql

y he encontrado que uno puede poner dentro del if tres condiciones

una es la condicion a evaluar y si es true se ejecuta la expresion 2 y sino la 3


yo sólo requiero que se ejecute la expresioón 2 y no la tres


basicamente lo que necesito es:

if (exp1, exp2)


donde la expresión1 seria un comparativo entre dos select que hago para saber si el valor de una columna es igual en la columna de otra tabla seria algo como

if (select... < select... , exp2)

y la expresión2 seria un insert que se ejecuta en caso de que se cumpla la comparación entre los dos valores arrojados por los dos select de la expresión1


me podrían colaborar con esto por favor.

gracias
__________________
http://tecnologiaco.com/
  #2 (permalink)  
Antiguo 24/07/2013, 21:34
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: duda con if

Cita:
donde la expresión1 seria un comparativo entre dos select que hago para saber si el valor de una columna es igual en la columna de otra tabla seria algo como

if (select... < select... , exp2)
IF() en ese contexto es una función que devuelve un valor en base a una comparación lógica, pero no ejecuta una sentencia en forma condicional. No es ese el sentido, y no puedes poner subconsultas dentro de la función.
Además, para saber si un valor de un campo en una tabla es igual, mayor, menor o diferente respecto de otro campo de otra tabla, se usan INNER JOIN, LEFT JOIN o RIGHT JOIN... No funciones así.
Me da la impresión de que no has estudiado suficientemente sobre SQL:

Cita:
y la expresión2 seria un insert que se ejecuta en caso de que se cumpla la comparación entre los dos valores arrojados por los dos select de la expresión1
No. En MySQL no sólo no existen sentencias condicionales, sino que además los DBMS que conozco no permiten hacer una consulta condicional donde se pueda seleccionar y/o insertar en la misma sentencia como lo estás describiendo.

Creo que estás planteando mal tu solución. Lo que describes se puede lograr por medio de stored procedures, no de sentencias únicas, y es de ese modo que se crea ese tipo de lógicas.
__________________
¿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 25/07/2013, 05:53
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: duda con if

Muchas gracias por la respuesta gnzsoloyo,

cómo podria hacer lo que dices?

podría ser algo como:


hago con joins la comparación de si el valor de una columna de una tabla es mayor que el de la otra tabla, eso lo puedo hacer, pero no se como hacer el llamado al insert o que no haga nada si no se cumple la condición.

porque si hago el join sería como:

select campos_tabla1, campos_tabla2
from tabla1 , tabla2
where condiciones

pero no creo que me sirva mucho, porque yo lo que quiero no es tanto que seleccione, sino que haga una seleccion y haga la comparación y si el resultado de esa comparación es true haga algo y si es false haga otra cosa.

cómo lo haría? y cómo hago para llamar el procedimiento almacenado desde mis querys?

gracias
__________________
http://tecnologiaco.com/
  #4 (permalink)  
Antiguo 25/07/2013, 06:12
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: duda con if

¿Cómo lo harías?
Stored procedures.Tan sencillo como eso.
Pero para más claridad y poder ejemplificar mejor, postea la estructura (create table) de las tablas involucradas, y qué tipo de comparación entre ambas se hace.
Es decir: Muestra un ejemplo no hipotético.
__________________
¿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 25/07/2013, 16:53
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: duda con if

hola gnzsoloyo,

muchas gracias por tu ayuda

ya lo he solucionado, pero quiero saber algo

en un procedimiento almacenado, en la parte donde se indican los argumentos que

va a tener dicho procedimiento, yo podria poner dos consulttas select que retornen cada una

un unico valor???

para que cada vez que se ejecute el procedimiento, se ejecuten los select

y se genere el valor que iran a tener los arguemntos de dicho procedimiento??


gracias de antemano
__________________
http://tecnologiaco.com/

Etiquetas: insert, select, sql, tabla
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 21:02.