J'ai une table avec des plages de dates. Je veux rechercher les écarts entre ces plages. J'ai compris que je pouvais quitter la table et calculer la différence.Ordre des lignes dans la table de jointures mysql
tableau actuel:
date_begin date_end
2010-08-01 2010-08-15
2010-08-16 2010-08-30
2010-08-31 2010-09-12
2010-10-01 2010-10-15
Je veux obtenir:
date_begin date_end - date_begin2 DATEDIFF(date_begin2 - date_end)
2010-08-01
2010-08-01 2010-08-15 2010-08-16 ...
2010-08-16 2010-08-30 2010-08-31 ...
2010-08-31 2010-09-12 2010-10-01 ...
2010-10-01 2010-10-15
J'utilise la requête suivante:
SELECT pay1.date_begin, pay1.date_end,
pay2.date_begin, pay2.date_end, DATEDIFF(pay2.date_begin, pay1.date_end)
FROM `payment_employees` AS pay1
LEFT JOIN `payment_employees` AS pay2 ON pay2.date_begin > pay1.date_end
GROUP BY pay1.date_begin
ORDER BY pay1.date_begin ASC
Mais le résultat est
pay1.date_begin date_end pay2.date_begin date_end difference
2010-08-01 2010-08-15 2010-08-31 2010-09-12 16 wrong
2010-08-16 2010-08-30 2010-08-31 2010-09-12 1 correct
2010-08-31 2010-09-12 2010-10-01 2010-10-15 19 correct
2010-10-01 2010-10-15 NULL NULL
Si je supprime le groupe par je peux voir qu'il y a des lignes correctes dans le résultat. Je ne peux pas comprendre comment les obtenir.
Existe-t-il un moyen de trier une table avant de la joindre?
Oui. Je pense que je ferai quelque chose avec la sous-requête. Merci – undsoft