Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

240
Vistas
Comparación de dos columnas MYSQL TIMESTAMP que no proporcionan resultados correctos

Tengo 2 mesas de cliente y seguimiento . Necesito seleccionar según las siguientes condiciones.

Si subscriber_id en la tabla cliente t1 NO EN la tabla de seguimiento t2 y t1.paid_amount = 0 Y t1.update_balance > 200

O

Si subscriber_id ESTÁ EN la tabla de seguimiento t2 y t1.paid_amount = 0 Y t1.update_balance > 200 Y TAMBIÉN si t1.update_time ES MAYOR QUE t2.update_time. Tanto el update_time en ambas tablas están en formato MYSQL TIMESTAMP .

Mi consulta actual es la siguiente:

 SELECT t1.id,t1.subscriber_id,t1.paid_amount,t1.update_balance FROM client AS t1 LEFT OUTER JOIN followup AS t2 ON t1.subscriber_id = t2.subscriber_id WHERE (t2.subscriber_id IS NULL AND t1.paid_amount = 0 AND t1.update_balance > 200) OR (t2.subscriber_id IS NOT NULL AND t1.paid_amount = 0 AND t1.update_balance > 200 AND 't1.update_time'> 't2.update_time')

Pero los datos no se seleccionan si t1.update_time > THAN t2.update_time..

 Client Table: ------------------------------------------------------------------- id subscriber_id paid_amount update_balance update_time -------------------------------------------------------------------- 1 AB4567 0 500 2020-07-12 18:22:24 2. AB4568 0 300 2020-07-15 17:22:24 -------------------------------------------------------------------- Followup Table ------------------------------------------------------------------ id subscriber_id feedback update_time ------------------------------------------------------------------- 1. AB4567 paid 2020-07-12 17:22:24 -------------------------------------------------------------------
  1. Si subscriber_id NO EN la tabla 2 - Mostrar FILA
  2. Si subscriber_id EN la tabla 2 - Mostrar si t1.update_time > t2.update_time

Solicitando ayuda de expertos en Mysql..

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No estoy seguro de que este sea todo el problema, pero

 UNIX_TIMESTAMP('t1.update_time'> 't2.update_time')

debiera ser

 t1.update_time > t2.update_time

Primero, no es necesario usar UNIX_TIMESTAMP al comparar, solo puede comparar las fechas directamente.

En segundo lugar, no debe citar los nombres de las columnas. Eso los convierte en cadenas literales. Consulte Cuándo usar comillas simples, comillas dobles y acentos graves en MySQL .

En tercer lugar, si usa UNIX_TIMESTAMP , debe llamarlo por separado en cada columna, por ejemplo

 UNIX_TIMESTAMP(t1.update_time) > UNIX_TIMESTAMP(t2.update_time)

Su código estaba comparando las cadenas, que se evalúa como TRUE , que es 1 , por lo que estaba evaluando UNIX_TIMESTAMP(1)

Para que toda la consulta funcione, divídala en dos consultas que combine con UNION .

 SELECT t1.id,t1.subscriber_id,t1.paid_amount,t1.update_balance FROM client AS t1 LEFT OUTER JOIN followup AS t2 ON t1.subscriber_id = t2.subscriber_id WHERE t1.paid_amount = 0 AND t1.update_balance > 200 AND t2.subscriber_id IS NULL UNION SELECT t1.id,t1.subscriber_id,t1.paid_amount,t1.update_balance FROM client AS t1 INNER JOIN followup AS t2 ON t1.subscriber_id = t2.subscriber_id AND t1.update_time > t2.update_time WHERE t1.paid_amount = 0 AND t1.update_balance > 200

MANIFESTACIÓN

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda