PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 14-11-2009 11:57:22

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Select croisé sur 2 tables.

Bonjour,
je m'explique vite fait. je vasi réaliser un site pour un bureau Réserve.
Le site sera simple, le bureau enregistrera les date d'embauche du personnel.
et les reserviste donnerons leur disponibilité.

J'aurais donc 2 tables en simplifié ca donne.
Une table embauche : idembauche |datedeb | datefin | nbrposte
Une table disponibilité : idres | datedebut | datefin

Esemple d'embauche : 10/12 au 20/12  - 2 postes

J'enregistre dans la table disponibilité toutes les disponibilité du personnel, ca peu être des des weeks, et semaine ou plus.
PAr exemple, on peu avoir:
1 - 01/12 au 31/12
2 - 03/12 au 18/12
3 - 18/12 au 20/12
4- 13/12 au 15/12
.....

Avec cette exemple, on voit qu'il y a un reserviste dipo sur toute la pèriode, et qu'aprés on pourrai embauché le reserviste 2 et 3 à la suite, le premier fait du 10 au 17 et le second du 18 au 20 ou bien embauché le 2 puis le 4 puis le 3 en alternance.

Je ne sais pas du tout comment mettre cela en requète de façon à affiché par exemple :

Renfort du 10/12 au 20/12 :
     - 1 réserviste dispo sur toutes la pèriode
     - 3 reservistes dispo en alternance


Et le second problème, lorsque l'on clique sur les détails de l'ambauche avec la liste des reserviste dispo, est ce qu'il serait possible de connaitre le nombre de jours de dispo en rapport avec l'embauche.

Dans l'exemple :
1 - 10 jours/10
2 - 8jours/10
3 - 3jours/10
4 - 3jours/10

j'ai peu être mal conçu ma table, c'est pour cela que je vous demande conseil.
Merci beaucoup de votre aide.

Hors ligne

#2 14-11-2009 12:47:56

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Select croisé sur 2 tables.

La méthode revient à faire des Union, il faut que tu testes si les dates de l'embauche sont comprises à l'intérieur de l'intervalle des dates de tes disponibilités.

Pour le second tu fais des différences entre les dates et tu évinces les résultats négatifs. ^_-

Hors ligne

#3 14-11-2009 19:48:47

morgan47
Membre
Inscription : 19-08-2009
Messages : 52

Re : Select croisé sur 2 tables.

Qu'est ce que tu entend par Union? des jointures?

je ne comprend pas pour ton histoire de différence, si les date d'embauche chevauche sur 2 mois?

Hors ligne

#4 14-11-2009 20:12:19

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : Select croisé sur 2 tables.

Saluton,
Par rapport à toute embauche (e) une disponibilité (d) se situe dans l'une des situations suivantes :

d.datefin < e.datedebut
d.datedebut > e.datefin
ces deux cas ne nous intéressent pas.

(d.datedebut =< e.datedebut) AND  (d.datefin >= e.datefin)
la disponibilité couvre toute l'embauche

(d.datedebut =< e.datedebut) AND  (d.datefin  BETWEEN e.datedebut AND e.datefin)
la disponibilité couvre le début de l'embauche (éventuellment juste le premier jour)

(d.datedebut > e.datedebut) AND  (d.datefin BETWEEN e.datedebut AND e.datefin)
la disponibilité couvre la fin de l'embauche (éventuellment juste le dernier jour)

(d.datedebut BETWEEN e.datedebut AND e.datefin)
AND
(d.dateFIN > BETWEEN e.datedebut AND e.datefin)
la disponibilité couvre une partie de l'embauche (éventuellement toute)


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 14-11-2009 20:58:49

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Select croisé sur 2 tables.

morgan47 a écrit :

Qu'est ce que tu entend par Union? des jointures?

je ne comprend pas pour ton histoire de différence, si les date d'embauche chevauche sur 2 mois?

On ne fait jamais une différence avec une date typé jj/mm/aaa, on la converti en quelque chose de plus général, par exemple un timestamp.
Avec quelques calculs tu auras un écart en jour et ce quelque soit le jour, le mois ou l'année de différence.

Concernant les unions oui c'est ce dont je parlais, regarde ce que t'a répondu Maljuna Kris.

Hors ligne

Pied de page des forums