2011-08-30 8 views
0

Je souhaite que vous nous aidiez à créer une requête qui pourra générer une rotation pour dis 4 employés pour une période de 1 semaine et en trois équipes différentes. À la fin du mois, le nombre total de travailleurs devrait être le même pour tous les employés.Application SQL Server

Il reste sur vous pour me conseiller comment le faire ..

Nous pouvons prendre plusieurs paramètres en compte tout en faisant cela .. Tels que Nombre de jours Nombre d'heures de travail Nbre de heures de repos après le quart de travail.

Ce que je pense,

Mais quand beaucoup s'implique de le faire. Nous obtenons la meilleure idée et la qui sera directement à la cible d'obtenir la meilleure requête.

vous espérez tous aider à faire ..

Merci d'avance pour votre aide et de temps à cet égard.

Permettez-moi de vous donner les détails fo création de l'application ..

Supposons que nous ayons n pas. des employés. s différents quarts de travail.

Ensuite, l'application devrait générer le rota pour tous à tel point qu'à la fin lorsque nous vérifions tous les rota le nombre de postes effectués par un employé devrait être le même que l'autre et que tous les employés auraient travaillé dans tous les quarts de travail pour le même nombre de fois.

Hope this helps ..

+0

Etes-vous sûr qu'une seule requête SQL est le meilleur moyen de le faire? Je garantis que ce serait hideusement compliqué. Vous souhaitez probablement extraire des informations de la base de données, effectuer la planification dans une autre application (C#, MS Access, tout ce qui vous convient), puis télécharger la planification terminée dans la base de données. –

+0

Je ne suis pas très sûr mais je voulais un moyen simple et facile à comprendre le codage .. Hmmn .. sonne mieux vous pouvez conseiller comment pouvons-nous procéder comme vous l'avez suggéré. –

+0

Pouvez-vous expliquer plus de détails? Et donnez quelques données de test pour votre article. – skorpk

Répondre

0

par votre commentaire plus tôt, vous êtes tout à fait raison; un arrangement front-end/back-end était exactement ce que je ferais. La permutation est plus difficile, car une randomisation naïve ne prendrait pas en compte les choses comme les vacances. Une approche moins naïve (mais toujours naïve) pourrait consister à passer par une affectation à la fois, en choisissant un travailleur aléatoire qui correspond à vos critères. Si vous atteignez une situation impossible (personne n'est capable de remplir une case à cause des vacances, des jours de repos, des changements de poste), prenez du recul (supprimez le changement le plus récent) et continuez.

Cela devrait au moins vous aider à démarrer; Je suis sûr que quelqu'un de plus compétent que moi pourrait trouver quelque chose de plus élégant.

+0

Merci beaucoup Jim .. Il était merveilleux maintenant je pense à faire la partie maximale dans SQL lui-même, puis en appelant les critères de l'extrémité avant .. Dites à l'aide de formulaires .. –

+0

Toute aide à cet égard. –

+0

J'ai essayé la requête ci-dessous et il me permet de générer de la valeur différente pour l'ID de champ, ce qui peut être considéré comme le Feild Emp ID SELECT id, val, R.rnd DE # t1 t1 CROSS APPLY (SELECT TOP 1 val comme rnd DE # t1 t2 O WH t1.val <> t2.val ORDRE PAR NEWID()) R COMMANDER PAR id Maintenant, j'ai besoin de relier cette sortie avec les paramètres tels que les heures de repos qu'un employé pourrait besoin entre deux quarts de travail. Aidez s'il vous plaît à le faire. Merci beaucoup d'avance pour votre aide. –