Problème requête select
Résolu/Ferméjee pee Messages postés 40903 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 7 mars 2025 - 27 sept. 2022 à 11:06
- Problème requête select
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Il y a eu un problème avec cette requête. nous travaillons à sa résolution aussi vite que nous le pouvons. - Forum Facebook
- Requête sql pix - Forum Python
- Erreur lors de l'envoi de la requête facebook marketplace - Forum Facebook
- Please select boot device - Forum Windows 7
2 réponses
Modifié le 22 sept. 2022 à 14:26
Bonjour,
Quand tu annonces "ça ne marche pas" il faut expliquer ce qui se passe, donner le message d'erreur, ...
Tu n'as pas de critère de restriction entre personnes et fonctions_employes et entre personne et travail_employes
Puisque tu t'es lancé dans les jointures, tu devrais aussi en faire sur les 2 tables fonctions_employes et travail_employes , et ne laisser dans le from que la table personnes
Modifié le 22 sept. 2022 à 17:04
l'id_structure tu vois que c'est toujours une mauvaise idée de ne pas avoir id_personne ;-)
SELECT nom, LT.nom_structure AS lieu_travail, LF.nom_structure AS lieu_fonction FROM personnes P LEFT JOIN fonctions_employes FE ON FE.ID = P.ID LEFT JOIN lieux_travail_employes LTE ON LTE.ID = P.ID LEFT JOIN structures LT ON LT.id_structure = LTE.id_structure LEFT JOIN structures LF ON LF.id_structure = FE.id_structure
26 sept. 2022 à 17:13
Merci bien mon ami jee pee vous êtes un génie, mais entre nous je suis pas convaincu de mon type de travail sur cette partie (historisation), ce type de travail est très compliqué, mais le problème j'ai pas le choix ou je ne sais pas comment gérer le projet comme il faut, j'espère que tu peut m'aider à me donner une autre idée plus simple que mon type de travail actuel.
Je travaille maintenant sur une application web de GRH avec php et MySQL, dans la partie historisation, il faut que chaque employé obtient un nouveau grade, tous ses anciens grades restent enregistré à la base des données, et tous les autres informations (déplacement d'un lieux de travail à un autre, les fonctions...).
Il faut que chaque modification de (gradation, ou changement lieux de travail, nouvelle fonction de travail) doit être enregistré, et en même temps je veux pas le système enregistre dans la table d'historisation les modifications à cause d'erreur de choix du grade ou nouveau lieux de travail...
Quelle est la meilleur méthode d'historisation ou méthode de travail plus simple ?
26 sept. 2022 à 17:30
J'ai vu plusieurs logiciels de Gestion du Personnel. La plupart des tables sur le statut (grade, fonction, salaire, lieu de travail, ...) étaient toujours historisées avec 2 champs, date de début, et date de fin. Même des infos moins primordiales comme le domicile, les conjoints, ... l'étaient. Le dernier enregistrement de ces séquences historisées avaient une date de fin théorique très éloignée, comme 31/12/2099.
En cas d'anomalie ou de saisie erronée, il faut gérer une suppression de l'enregistrement en question, et une maj soit de la date de fin de l'enregistrement précédent, soit la date de début de l'enregistrement suivant. En demandant à l'utilisateur quelle est la solution à retenir.
27 sept. 2022 à 10:32
bonjour,
La date de fin n'est pas toujours nécessaire. Il est parfois préférable de la déterminer à partir de la date de début suivante.
Modifié le 27 sept. 2022 à 11:06
Certes, il y a des applications où on peut s'en passer. Mais dans un calcul de paie où tu veux de nombreuses valeurs, à une date précise de la carrière, il peut être plus facile d'accéder directement à l'enregistrement souhaité, que de devoir faire aussi référence au suivant avec peut être un sous select à chaque fois.
WHERE ... AND '30/09/22' BETWEEN grade.date_debut AND grade.date_fin AND '30/09/22' BETWEEN echelon.date_debut AND echelon.date_fin AND '30/09/22' BETWEEN indice.date_debut AND indice.date_fin AND '30/09/22' BETWEEN IM.date_debut AND IM.date_fin ...
22 sept. 2022 à 14:45
J'ai ajouté les critères de restriction et j'ai retiré les deux tables depuis FROM comme vous m'a dit et j'ai testé comme ça:
il m'affiche le message suivant:
#1054 - Champ 'fonctions_employes.ID' inconnu dans where clause
(je travaille sur MySQL, phpMyAdmin version 4.9.7)
22 sept. 2022 à 14:48
Il faut les retirer du from et rajouter 2 LEFT JOIN pour ces tables, et supprimer le WHERE
22 sept. 2022 à 15:04
J'ai fais comme ça:
#1054 - Champ 'P.lieu_travail' inconnu dans on clause
22 sept. 2022 à 15:11
lieu_travail et lieu_fonction ne sont pas dans la table personnes
il faut faire les liens entre les id lieu sur LT LTE, et LF FE
22 sept. 2022 à 16:06
J'ai corrigé comme ça:
#1054 - Champ 'LTE.lieu_travail' inconnu dans on clause