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

Se puede hacer esto en MySQL

Estas en el tema de Se puede hacer esto en MySQL en el foro de Mysql en Foros del Web. Asi me funciona bien access pero mysql no me trae el resulto. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT MPR_ID ,         ...
  #1 (permalink)  
Antiguo 12/08/2011, 19:54
Avatar de arielenter  
Fecha de Ingreso: abril-2009
Mensajes: 75
Antigüedad: 14 años, 11 meses
Puntos: 2
Pregunta Se puede hacer esto en MySQL

Asi me funciona bien access pero mysql no me trae el resulto.


Código SQL:
Ver original
  1. SELECT MPR_ID,
  2.         (SELECT SUM(PVT.PVT_CANT)
  3.       FROM PVT
  4.       WHERE PVT.PVT_MPR_ID = MPR_ID) AS TOT_PVT,
  5.         (SELECT SUM(ALM.ALM_CANT)
  6.       FROM ALM
  7.       WHERE ALM.ALM_MPR_ID = MPR_ID) AS TOT_ALM,
  8.     IIF(ISNULL(TOT_PVT), 0, TOT_PVT) + IIF(ISNULL(TOT_ALM), 0,
  9.     TOT_ALM) AS TOT_GRAL, MPR_VALUNIT,
  10.     MPR_VALUNIT * TOT_GRAL AS NUEVO_TOTVAL
  11. FROM MPR
__________________
www.enterpy.net

Última edición por arielenter; 12/08/2011 a las 19:59
  #2 (permalink)  
Antiguo 12/08/2011, 21:02
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 8 meses
Puntos: 416
Respuesta: Se puede hacer esto en MySQL

En MySQL no se usa IIF, se usa IF
  #3 (permalink)  
Antiguo 12/08/2011, 21:09
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: Se puede hacer esto en MySQL

Por un lado, IIF() no es una función de MySQL, por lo que probablemente esté dando error de sintaxis.
Además, no se pueden usar en el mismo SELECT los alias de los campos como fuente de una operación. Simplemente no funcionará (ignoro por qué puede funcionar en Access, porque Access no es un motor de base de datos).
Por otro lado, siempre es mejor evitar hacer subconsultas dentro de los campos del SELECT. Es una forma muy ineficiente de hacer consultas

A todo esto te podría agregar una sugerencia: Es mejor intentar lograr el resultado con JOINs y no de la forma que lo haces.
Probemos esto:
Código MySQL:
Ver original
  1.     MPR_ID,
  2.     TOT_PVT,
  3.     TOT_ALM,
  4.     (TOT_PVT + TOT_ALM) TOT_GRAL,
  5.     MPR_VALUNIT,
  6.     (MPR_VALUNIT * TOT_GRAL) NUEVO_TOTVAL
  7.     (SELECT
  8.         MPR_ID,
  9.         IFNULL(SUM(PVT.PVT_CANT), 0) TOT_PVT,
  10.         IFNULL(SUM(ALM.ALM_CANT), 0) TOT_ALM,
  11.         MPR_VALUNIT
  12.     FROM
  13.         MPR M
  14.         INNER JOIN
  15.         PVT P ON P.PVT_MPR_ID = P.MPR_ID
  16.         INNER JOIN
  17.         ALM A ON A.ALM_MPR_ID = M.MPR_ID) T1;
Te lo puse muy desplegado para que se pueda apreciar mejor la lógica usada.
__________________
¿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: 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 09:50.