Veuillez accepter mes excuses pour un manque de tentative de code.Période de requête MySQL - trouver des périodes communes
Je n'arrive pas à comprendre ce qui se passe - ou même à comprendre si c'est faisable!
J'ai une table remplie de 'date slots', ceux-ci peuvent être réservés par un particulier.
Le tableau des créneaux horaires ressemble à ceci:
ID | Price | Available_from | Available_ to
------------------------------------
1 | 20.00 | 2017-10-01 | 2018-01-01
2 | 20.00 | 2017-11-01 | 2017-12-07
3 | 20.00 | 2017-10-31 | 2018-01-31
4 | 20.00 | 2017-10-22 | 2017-11-21
------------------------------------
Dans ces lignes, il y a une plage de dates commune où les quatre résultats sont disponibles, 01/11/2017> 2017-11-21
Je voudrais interroger ma base de données pour voir si 1) il y a une gamme commune pour chaque résultat et 2) s'il y a, obtenir la plage de dates.
Besoin d'aide?
Merci
Eh bien, si vous regardez juste vos propres données d'exemple, il devrait devenir évident assez rapidement, que le résultat désiré se compose de la date Available_from maximum et de la disponibilité minimum à ce jour. (En ce qui concerne les obtenir, allez chercher "mysql groupwise maximum" pour l'idée de base.) Bien sûr, ce ne sera pas aussi simple que cela, s'il y a des "trous" dans les intervalles existants - mais votre exemple ne contient pas un cas. Alors maintenant, votre prochaine étape consiste à réfléchir à ce que seront les «cas limites» dans cette situation, et à quelle manipulation spécifique ils pourraient avoir besoin. – CBroe
Regardez http://salman-w.blogspot.ca/2012/06/sql-query-overlapping-date-ranges.html. Aussi recherche StackOverflow pour l'intersection de la plage de dates sql, vous trouverez quelques réponses détaillées. Ex https://stackoverflow.com/questions/4490553/detect-overlapping-date-ranges-from-the-same-table – Nic3500
Merci @CBroe, après l'avoir exposé comme ça et avait un peu de santé mentale - oui, il semble loin plus simple! Merci, je vais explorer cela maintenant. – user3061608