2010-07-10 8 views
1

Je voudrais savoir s'il est possible de récupérer X jours non ouvrables (date type) via un seul appel DB dans mysql.Requête DB unique pour récupérer les jours ouvrables (mysql)

La liste des jours fériés est stockée dans un tableau. Ainsi, les jours (à partir de CURDATE) qui n'ont pas d'entrées dans ce tableau sont considérés comme des jours ouvrables.

Merci!

Répondre

1

La table des congés inclut-elle également les week-ends?

Créez une table de nombres avec une seule colonne (num, say) et les lignes 1 grâce à some-large-value - ce sera utile. GAUCHE Joignez la table des fêtes à cette table le "jour férié" = (CURDATE + INTERVAL num - 1 JOUR), ajoutez un WHERE pour exclure les jours fériés et ensuite ordonnez cette requête par nombre croissant et LIMITEZ la requête aux X lignes.

+0

Il peut inclure ou non les fins de semaine. Seuls les jours dans la table de vacances seraient considérés comme des vacances. Pensais à votre solution. Pour que la solution ci-dessus fonctionne, tous les jours devraient être présents dans la table de vacances avec un drapeau pour indiquer si ce jour est un jour férié ou non. Correct? De même, existe-t-il un moyen de le faire sans créer d'autre table? Merci! – user355562

+0

Que les week-ends mai mai ou ne pas être présent semble juste. Vous n'avez pas besoin de tous les jours pour être présent dans la table de vacances (la requête serait beaucoup plus simple si c'était le cas - pas besoin d'une table supplémentaire) - tant que votre requête prend des lignes de la table des nombres et effectue une jointure à gauche à la table des congés, vous obtiendrez tous les jours que vous pouvez ensuite filtrer en utilisant une clause WHERE appropriée. Je ne connais pas de moyen de faire cela dans MySQL sans une table séparée - là encore, je ne travaille pas avec MySQL autant que, disons, SQL Server, où c'est possible - mais-maladroit sans une telle table. –

Questions connexes