Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!