Requète SQL
Résolu
papyclic
Messages postés
446
Date d'inscription
Statut
Membre
Dernière intervention
-
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
papyclic Messages postés 446 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai une requète qui me permet d'afficher les fonctions des responsables de notre association, dont la date de fin est vide. Actuellement il y a un poste vacant donc cette fonction devrait afficher par exemple...
Président-Adjoint: poste vacant
Si par exemple une fonction n'est pas attribuée je souhaiterai pour afficher "poste vacant" je tourne ma requète dans tous les sens mais en vain. Pouvez-vous m'aider s'ils vous plait.
Un grand merci
La table cdc_gerer
idpers
idfonc
ddebut
dfin
la table cdc_fonctions
idfonc fonction fnbur
1 Président 1
2 Président-adjoint 1
3 Secrétaire 1
etc
Voici la fameuse requète...
J'ai une requète qui me permet d'afficher les fonctions des responsables de notre association, dont la date de fin est vide. Actuellement il y a un poste vacant donc cette fonction devrait afficher par exemple...
Président-Adjoint: poste vacant
Si par exemple une fonction n'est pas attribuée je souhaiterai pour afficher "poste vacant" je tourne ma requète dans tous les sens mais en vain. Pouvez-vous m'aider s'ils vous plait.
Un grand merci
La table cdc_gerer
idpers
idfonc
ddebut
dfin
la table cdc_fonctions
idfonc fonction fnbur
1 Président 1
2 Président-adjoint 1
3 Secrétaire 1
etc
Voici la fameuse requète...
<?php $requete = "SELECT nom,prenom,fonction,fnbur FROM cdc_gerer RIGHT JOIN cdc_fonctions ON cdc_gerer.idfonc=cdc_fonctions.idfonc LEFT JOIN cdc_personnes ON cdc_personnes.idpers=cdc_gerer.idpers WHERE cdc_gerer.dfin = 0 ORDER BY fnbur DESC,fonction,nom,prenom"; $resultat = execRequete($requete,$connexion); $place = ""; echo "<ul>"; while($r=mysql_fetch_object($resultat)) { if($r->fnbur != $place) { switch ($r->fnbur) { case '0': $domaine = "Autres responsabilités"; break; case '1': $domaine = "Bureau"; break; } echo "</ul><h2>$domaine</h2><ul>"; $place = $r->fnbur; } $lien = "javascript:alert('Changer le $r->fonction : à venir...')"; if(!$r->nom) { $personne = " <span style=\"color:#808080\"><gras>poste vacant</gras></span>"; } else { $personne = "$r->nom $r->prenom"; } echo "<li> <a href=\"$lien\">$r->fonction</a>: $personne</li>"; } ?>
A voir également:
- Requète SQL
- Logiciel sql - Télécharger - Bases de données
- Sql lister les tables ✓ - Forum Programmation
- Requête bloquée par le pare-feu applicatif claranet webfence ✓ - Forum Réseaux sociaux
- Jointure sql ✓ - Forum MySQL
- Erreur lors de l'envoi de la requête facebook - Forum Facebook
27 réponses
Dans ce cas je pense que c'est la structure de tes tables qui ne vont pas..
Par exemple... tu as plusieurs professeurs... sauf qu'il n'y a qu'un seul ID (7).
Comment savoir que tu devrais avoir 1,2 ou 10 prof ??
Je pense que pour simplifier les choses il faudrait organiser ta bdd comme ça :
cdc_personnes : ok
cdc_fonctions : Liste des fonctions : OK
cdc_postes : Liste des Postes (en gros, une ligne par "poste" à occuper avec un lien sur la table cdc_fonction (idfonc) et un lien avec la table cdc_personnes (pour n'y mettre QUE les personnes en poste actuellement...et laisser vide pour les postes vacants)
Et enfin, une table dans laquelle tu pourrais mettre l'historique
Par exemple... tu as plusieurs professeurs... sauf qu'il n'y a qu'un seul ID (7).
Comment savoir que tu devrais avoir 1,2 ou 10 prof ??
Je pense que pour simplifier les choses il faudrait organiser ta bdd comme ça :
cdc_personnes : ok
cdc_fonctions : Liste des fonctions : OK
cdc_postes : Liste des Postes (en gros, une ligne par "poste" à occuper avec un lien sur la table cdc_fonction (idfonc) et un lien avec la table cdc_personnes (pour n'y mettre QUE les personnes en poste actuellement...et laisser vide pour les postes vacants)
Et enfin, une table dans laquelle tu pourrais mettre l'historique
merci effectivement c'est une piste
cdc_postes
| idpers | idfonc | ddebut | dfin |
cdc_gerer
à conserver tel quel pour l'historique
| idpers | idfonc | ddebut | dfin |
cdc_fonctions
à conserver tel quel
cdc_personnes
idem
Merci tu peux me dire si c'est bien cela qu'il faudrait réorganiser, je n'arrive pas bien à faire la difference entre les tables cdc_postes et cdc_gerer.
Faut-il mettre également une date de début et de fin dans la table cdc_postes.
cdc_postes
| idpers | idfonc | ddebut | dfin |
cdc_gerer
à conserver tel quel pour l'historique
| idpers | idfonc | ddebut | dfin |
cdc_fonctions
à conserver tel quel
cdc_personnes
idem
Merci tu peux me dire si c'est bien cela qu'il faudrait réorganiser, je n'arrive pas bien à faire la difference entre les tables cdc_postes et cdc_gerer.
Faut-il mettre également une date de début et de fin dans la table cdc_postes.
Actuellement dans cdc_gerer .. tu mets toutes les personnes qui ont occupés un poste .... d'où le souci pour savoir qui occupe quel poste actuellement et si un poste est vacant ou non....
A la limite tu peux garder cette table pour conserver l'historique des postes...
par contre, pour savoir quels postes sont occupés ou vacants..il te faut une table intermédiaire comme ceci je pense :

A la limite tu peux garder cette table pour conserver l'historique des postes...
par contre, pour savoir quels postes sont occupés ou vacants..il te faut une table intermédiaire comme ceci je pense :

Bonjour,
J'ai essayé de rédiger ça sur papier il y a un détail qui m'échappe. Aujourd'hui nous avons 4 professeur si l'an prochain il y en a 2
Donc il va en ressortir
idfonction idpers
7 9
7 8
7 poste vacant
7 poste vacant
Alors que ce n'ai pas des postes vacant.
Je ne sais plus peut-être j'ai mal compris.
Je te remercie
J'ai essayé de rédiger ça sur papier il y a un détail qui m'échappe. Aujourd'hui nous avons 4 professeur si l'an prochain il y en a 2
Donc il va en ressortir
idfonction idpers
7 9
7 8
7 poste vacant
7 poste vacant
Alors que ce n'ai pas des postes vacant.
Je ne sais plus peut-être j'ai mal compris.
Je te remercie
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour
Excuse moi j'ai besoin de conseil, quelque chose que je n'arrive pas à comprendre en fait.
J'ai donc créé la table cdc_postes comme tu me l'a suggéré malgrès tout les postes vacants ne s'affichent pas.
La structure de cette table j'ai l'idpers à 0 cela a t-il une influence? je te joint une capture juste pour que tu vois et la rquète complète, en te remerciant si tu peux m'aider encore.
https://www.cjoint.com/c/FIChjWtH2Lk
Excuse moi j'ai besoin de conseil, quelque chose que je n'arrive pas à comprendre en fait.
J'ai donc créé la table cdc_postes comme tu me l'a suggéré malgrès tout les postes vacants ne s'affichent pas.
La structure de cette table j'ai l'idpers à 0 cela a t-il une influence? je te joint une capture juste pour que tu vois et la rquète complète, en te remerciant si tu peux m'aider encore.
https://www.cjoint.com/c/FIChjWtH2Lk
$requete = "SELECT nom,prenom,fonction,fnbur FROM cdc_personnes,cdc_postes,cdc_fonctions WHERE cdc_postes.idpers=cdc_personnes.idpers AND cdc_postes.idfonc=cdc_fonctions.idfonc"; $resultat = execRequete($requete,$connexion); $place = ""; echo "<ul>"; while($r=mysql_fetch_object($resultat)) { if($r->fnbur != $place) { switch ($r->fnbur) { case '0': $domaine = "Autres responsabilités"; break; case '1': $domaine = "Bureau"; break; } echo "</ul><h2>$domaine</h2><ul>"; $place = $r->fnbur; } $lien = "javascript:alert('Changer le $r->fonction : à venir...')"; if(!$r->nom) { $personne = " <span style=\"color:#808080\"><gras>poste vacant</gras></span>"; } else { $personne = "$r->nom $r->prenom"; } echo "<li> <a href=\"$lien\">$r->fonction</a>: $personne</li>"; }