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

Variables dentro de un Select

Estas en el tema de Variables dentro de un Select en el foro de Mysql en Foros del Web. Hola a todos como están veran tengo una tabla donde registro fechas de la cual me han pedido realizar un conteo de todos los registros ...
  #1 (permalink)  
Antiguo 09/05/2016, 14:35
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Contar Registros segun fechas

Hola a todos como están veran tengo una tabla donde registro fechas de la cual me han pedido realizar un conteo de todos los registros que se encuentren con fechas actuales o ya pasadas aqui mi consulta
Código MySQL:
Ver original
  1. SELECT DISTINCT COUNT(*) FROM seg_pap sp
  2. LEFT JOIN usuarios_crm dato ON dato.jc_usuario_id = sp.jc_usuario_id
  3. WHERE sp.seg_estatus_id IN (9,10,11) AND sp.jc_usuario_id = 7
  4. AND DATEDIFF(sp.seg_pap_fecha_proximo_contac,NOW()) <= 0
me explico la columna seg_papa_proximo_contact contiene fechas las cuales el usuario agenda si la fecha que agendo por ejemplo es hoy 09-05-2016 deberia contarlo pero si la fecha fue 01-05-2016 y aun no se actualiza tambien deberia contarlo lo cual comparando con lo que tengo cuenta demás ayuda por favorrr
  #2 (permalink)  
Antiguo 13/05/2016, 11:03
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Variables dentro de un Select

Hola ha todos tengo un select asi
Código MySQL:
Ver original
  1. select A.Periodo,
  2. A.Mes,A.Total_Metas,
  3. TotalVentas =   B.Total_Ventas
  4. from(select Periodo = YEAR(mtd.jc_metas_fecha),
  5. Mes = MONTH(mtd.jc_metas_fecha),
  6. Total_Metas = SUM(mtd.jc_metas_monto)
  7. from    metas mt
  8. join    metas_detalles mtd on mtd.jc_meta_id = mt.jc_meta_id
  9. WHERE mtd.jc_unidad_negocio_id = 6
  10. group by YEAR(mtd.jc_metas_fecha), MONTH(mtd.jc_metas_fecha) )A
  11. left join (SELECT Periodo   = year(sp.seg_pap_fecha_ultimo_contac),
  12. Mes = MONTH(sp.seg_pap_fecha_ultimo_contac),
  13. Total_Ventas = sum(sps.seg_pap_valor_venta)
  14. FROM    seg_pap sp
  15. LEFT JOIN   seg_pap_servicio sps ON sps.seg_pap_id = sp.seg_pap_id
  16. where   sp.seg_estatus_id = 8
  17. group by year(sp.seg_pap_fecha_ultimo_contac), MONTH(sp.seg_pap_fecha_ultimo_contac))B on B.Periodo = A.Periodo and B.Mes = A.Mes
  18. WHERE A.Periodo = 2016 AND A.Mes = 4
se puede usar esto asi
Código MySQL:
Ver original
  1. select Periodo  = YEAR(mtd.jc_metas_fecha),
  2. //Porque me sale error este
  3. // /* Error de SQL (1054): Unknown column 'Periodo' in 'field list' */
  #3 (permalink)  
Antiguo 13/05/2016, 11:17
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: Variables dentro de un Select

Cita:
Porque me sale error este
Cita:
Error de SQL (1054): Unknown column 'Periodo' in 'field list'
Porque Periodo no es una variable de sesión de MySQL, y no pueden hacerse asignaciones así tampoco dentro de un SP, por lo que eso que haces no es legal.

Explicanos el contexto en el que esa consulta se ejecuta, y de dónde se supone que salen estas "variables":
Cita:
TotalVentas
Mes
Total_Metas
Ninguna de esas variables tiene existencia dentro de una consulta MySQL, por lo que no es correcto que las incluyas. Además tampoco serían variables sino comparaciones contra tres columnas de tales nombres, por lo que deberían devolver un valor booleano y no un valor numérico.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/05/2016, 12:06
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Variables dentro de un Select

Pues creo que no me explique que era lo que deseaba pues mi consulta es para un cuadro de metas y modifique mi consulta y la hice así
Código MySQL:
Ver original
  1. SELECT A.Fecha,A.Total_Metas,
  2. B.Total_Ventas AS TotalVentas
  3. from(SELECT mtd.jc_metas_fecha AS Fecha,YEAR(mtd.jc_metas_fecha) AS Periodo,
  4. MONTH(mtd.jc_metas_fecha) as Mes,
  5. SUM(mtd.jc_metas_monto) AS Total_Metas
  6. from    metas mt
  7. join    metas_detalles mtd on mtd.jc_meta_id = mt.jc_meta_id
  8. WHERE mtd.jc_unidad_negocio_id = 6
  9. group by YEAR(mtd.jc_metas_fecha), MONTH(mtd.jc_metas_fecha) )A
  10. left join (SELECT year(sp.seg_pap_fecha_ultimo_contac) AS Periodo,
  11. MONTH(sp.seg_pap_fecha_ultimo_contac) AS Mes,
  12. sum(sps.seg_pap_valor_venta) AS Total_Ventas
  13. FROM    seg_pap sp
  14. LEFT JOIN   seg_pap_servicio sps ON sps.seg_pap_id = sp.seg_pap_id
  15. where   sp.seg_estatus_id = 8
  16. group by year(sp.seg_pap_fecha_ultimo_contac), MONTH(sp.seg_pap_fecha_ultimo_contac))B on B.Periodo = A.Periodo and B.Mes = A.Mes
Gracias por la explicacion de todas formas y pues al final tuve el resultado deseado Gracias
  #5 (permalink)  
Antiguo 13/05/2016, 12:42
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Contar Registros segun fechas

Pues probe de la siguiente manera
Código MySQL:
Ver original
  1. SELECT DISTINCT COUNT(*) FROM seg_pap sp
  2. LEFT JOIN usuarios_crm dato ON dato.jc_usuario_id = sp.jc_usuario_id
  3. WHERE sp.seg_estatus_id IN (9,10,11) AND sp.jc_usuario_id = 7
  4. AND DATEDIFF(sp.seg_pap_fecha_proximo_contac,NOW()) = 0
y me cuenta pero solo los que estan dentro de este mes y no los anteriores solo cambie
<= por = no se como debería hacer
  #6 (permalink)  
Antiguo 13/05/2016, 14:49
 
Fecha de Ingreso: abril-2015
Mensajes: 304
Antigüedad: 9 años
Puntos: 2
Respuesta: Variables dentro de un Select

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Porque Periodo no es una variable de sesión de MySQL, y no pueden hacerse asignaciones así tampoco dentro de un SP, por lo que eso que haces no es legal.

Explicanos el contexto en el que esa consulta se ejecuta, y de dónde se supone que salen estas "variables":

Ninguna de esas variables tiene existencia dentro de una consulta MySQL, por lo que no es correcto que las incluyas. Además tampoco serían variables sino comparaciones contra tres columnas de tales nombres, por lo que deberían devolver un valor booleano y no un valor numérico.
Respondiendo a tu pregunta pues no son varibales en lo que me equivoque en describir en el post,son nombres de cabecera que asigno de mi sub consulta los cual cambie
Código MySQL:
Ver original
  1. TotalVentas =   B.Total_Ventas
  2. // a esto
  3. TotalVentas  AS  B.Total_Ventas
Bueno y con lo cual asi solucione mi problema ahora creo que por equivocación juntaste dos temas distintos es decir el de otro post este Contar Registros segun fechas el cual si es otro post y los temas son distintos cuando tenga la solucion sobre este tema lo reposteare porque para este tema aun no encuentro solucion

Etiquetas: fecha, join, registros, select, sql, tabla, variables
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 22:33.