Ver Mensaje Individual
  #6 (permalink)  
Antiguo 29/11/2009, 18:18
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: estructuras condiciones? cual es la sintaxis en mysql

Cita:
create procedure mostrar(elementos)

podria implementar in if al principio para clasificar la informacion?
begin
if (condiciones de diferentes tablas) then
condiciones
end if
Técnicamente, si, lo que no puedo es dar una descripción precisa sin saber qué es lo que hay que hacer.
Un IF que tenga alternativas sería un sistema de decisión del tipo IF ... THEN/ ELSEIF... THEN / ELSE / END IF. Ese conjunto de alternativas es perfectamente viable, aunque para que tenga sentido cada alternativa debería ser una comparación lógica diferente, donde no intervengan los mismos parámetros.
Para hacer una selección basada en diferentes valores obtenidos en un mismo tipo de consulta con los mismos parámetros, se usa CASE..., no IF.
De todos modos, la comparación lógica que se hace en el IF puede ser perfectamente una sentencia SELECT (como también en el CASE) siempre y cuando esa sentencia devuelva un único valor. Si el SELECT devuelve más de un valor, hay que resolver el problema de otras formas, y allí tendrías que detallar más lo que hay que hacer.

Cita:
y otra pregunta seria se puede implementar un if dentro de select o de where, having etc.??
Existe en MySQL la función IF(comparación, valorTrue, valorFalse); lo que no puede contener es un SELECT como resultado de la comparación (no es un constructor de flujo).
respecto al uso dentro de cada cláusula de una sentencia SELECt, la pregunta es demasiado abstracta. Deberías aclarar más, y con algún caso de ejemplo, qué es lo que quieres resolver. Así podría entender mejor hacia dónde vas.
Respecto del WHERE, no se pueden hacer en él ciertas cosas, como usar funciones de agrupamiento, o alias (y no se puede usar un IF()). Para ello el modelo implementó el HAVING, pero a su vez el uso debe tener sentido. No te olvides que el significado de HAVING es "teniendo...", lo que implica que el resultado contenga cierto valor o condición.




Te daré, si, un tip: Es muy habitual que cuando empiezan a desarrollar con bases de datos, los programadores traten de resolver las cosas aplicando la misma lógica que en los programas, y eso es un error. Las más de las veces, todo lo que necesitan es escribir una sola consulta, mucho más compleja, que responda lo que necesitan...
Pero para eso se requiere cierta experiencia.

Yo, al principio, realizaba búsquedas secuenciales (que los SP soportan perfectamente) para buscar ciertos registros en las tablas. Luego me di cuenta que si reescribía una sola sentencia SELECT usando ciertas funciones obtenía exactamente lo que buscaba... en un centésimo del tiempo que usaba la busqueda secuencial.

El SQL es muy poderoso haciendo consultas, pero hay que acostumbrarse a la lógica que usa, que es distinta de la de programación (mis profesores de BB.DD. me lo decían y yo creía que exageraban).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 29/11/2009 a las 18:23