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
Bonjour,
1 - tu utilises l'ancienne extension Mysql (considérée comme obsolète ! )
Je t'invite fortement à passer à mysqli ou ( perso je préfère...) la PDO.
Je t'invite à lire ceci :
- https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete
- https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
2 - Ton souci concerne la requête elle même ou le code PHP qui l'exécute ?
Si le souci concerne UNIQUEMENT ta requête... c'est dans le forum Bases de données qu'il faut la poser (je pourrais y déplacer cette discussion si besoin).
3 - Je ne suis pas sûr d'avoir compris ta question...
En fait tu cherches à récupérer la liste des postes non-occupés c'est ça ?
Donc les POSTES dont l'ID ne serait pas présent dans la table cdc_gerer... non ?
Un truc du genre :
1 - tu utilises l'ancienne extension Mysql (considérée comme obsolète ! )
Je t'invite fortement à passer à mysqli ou ( perso je préfère...) la PDO.
Je t'invite à lire ceci :
- https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete
- https://www.commentcamarche.net/faq/44117-connexion-a-une-base-avec-pdo-mysqli
2 - Ton souci concerne la requête elle même ou le code PHP qui l'exécute ?
Si le souci concerne UNIQUEMENT ta requête... c'est dans le forum Bases de données qu'il faut la poser (je pourrais y déplacer cette discussion si besoin).
3 - Je ne suis pas sûr d'avoir compris ta question...
En fait tu cherches à récupérer la liste des postes non-occupés c'est ça ?
Donc les POSTES dont l'ID ne serait pas présent dans la table cdc_gerer... non ?
Un truc du genre :
SELECT * FROM cdc_fonctions WHERE idfonc NOT IN (SELECT idfonc FROM cdc_gerer );
Bonjour
En fait il faut que je récupére l'ID de la table cdc_fonction qui est dans la table cdc_gerer et qui à une date de fin vide.
Si tu peux regarder à la ligne 22 sur mon premier post je crois que c'est cela qui ne va pas.
Pour tout te dire je suis perdu.
Lorsque j'avais aucune entrée dans la table cdc_gerer voilà ce que la requète me retournait...
lorsque j'ai fait les entrées
La structure de la table cdc_gerer
Merci
En fait il faut que je récupére l'ID de la table cdc_fonction qui est dans la table cdc_gerer et qui à une date de fin vide.
Si tu peux regarder à la ligne 22 sur mon premier post je crois que c'est cela qui ne va pas.
Pour tout te dire je suis perdu.
Lorsque j'avais aucune entrée dans la table cdc_gerer voilà ce que la requète me retournait...
Président: poste vacant Secrétaire: poste vacant Trésorier: poste vacant
lorsque j'ai fait les entrées
Président: Dupont Pierre Secrétaire: Dupont Paul
La structure de la table cdc_gerer
idpers idfonc ddebut dfin int(11) int(11) date date
Merci
Bonjour
Merci de ta réponse malheureusement elle ne me retourne pas les postes vacants....
J'ai juste corrigé
CF.fnbur au lieu de CP.fnbur
Merci de ta réponse malheureusement elle ne me retourne pas les postes vacants....
J'ai juste corrigé
CF.fnbur au lieu de CP.fnbur
je viens de la tester et cela me retourne uniquement les fonctions dont la date est vide.
Pour essayer d'être encore mieux explicite...
Par exemple la fonction "Président-Adjoint" dans le passé cette fonction était occupé mais plus aujourd'hui donc il y a une date de début et une date de fin donc le poste est vacant.
Pour essayer d'être encore mieux explicite...
Par exemple la fonction "Président-Adjoint" dans le passé cette fonction était occupé mais plus aujourd'hui donc il y a une date de début et une date de fin donc le poste est vacant.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en rajoutant
WHERE CG.dfin IS NULL
cela me retourne les fonctions également qui n'ont jamais été occupé
WHERE CG.dfin IS NULL
cela me retourne les fonctions également qui n'ont jamais été occupé
Donc c'est bon non ?
Par contre c'est un OR que j'aurai mis dans la requête :
Par contre c'est un OR que j'aurai mis dans la requête :
SELECT CP.nom ,CP.prenom ,CF.fonction ,CP.fnbur FROM dc_fonctions CF LEFT JOIN cdc_gerer CG ON CG.idfonc = CF.idfonc LEFT JOIN cdc_personnes CP ON CP.idpers = CG.idpers WHERE CG.dfin = 0 OR CG.dfin IS NULL ORDER BY fnbur DESC,fonction,nom,prenom
Bonjour,
Non ce n'ai toujours pas ce que je souhaite malheureusement.
Les entrées retournées sont les fonctions dont la date de fin est "0000-00-00" ou NULL c'est à dire jamais occupé c'est déja ça...
Maintenant il faudrait également les fonctions qui ne sont pas occupées actuellement, mais qu'elles l'ont été dans le passé.
exemple
Président-Adjoint poste occupé 2012-02-04 au 2015-03-01 aujourd'hui Poste vacant.
Merci de ton aide.
Non ce n'ai toujours pas ce que je souhaite malheureusement.
Les entrées retournées sont les fonctions dont la date de fin est "0000-00-00" ou NULL c'est à dire jamais occupé c'est déja ça...
Maintenant il faudrait également les fonctions qui ne sont pas occupées actuellement, mais qu'elles l'ont été dans le passé.
exemple
Président-Adjoint poste occupé 2012-02-04 au 2015-03-01 aujourd'hui Poste vacant.
Merci de ton aide.
Bonjour,
Pouvez-vous essayez de m'aider s'ils vous plait, je commence à désespérer pour trouver la solution à mon problème.
Je vous remercie.
Bonne nuit à tous.
Pouvez-vous essayez de m'aider s'ils vous plait, je commence à désespérer pour trouver la solution à mon problème.
Je vous remercie.
Bonne nuit à tous.
Maintenant il faudrait également les fonctions qui ne sont pas occupées actuellement, mais qu'elles l'ont été dans le passé.
Dans ce cas, tu ajoutes dans ton where une condition sur la date tout simplement.... (http://www.w3schools.com/sql/func_now.asp)
Un truc du genre
SELECT CP.nom ,CP.prenom ,CF.fonction ,CP.fnbur FROM dc_fonctions CF LEFT JOIN cdc_gerer CG ON CG.idfonc = CF.idfonc LEFT JOIN cdc_personnes CP ON CP.idpers = CG.idpers WHERE CG.dfin = '0000-00-00' OR CG.dfin IS NULL OR CG.dfin <now() ORDER BY fnbur DESC,fonction,nom,prenom
Bonjour
En fait j'avais déjà essayé mais cela me rencoie toutes les fonctions avec une dates de fin avant la date d'aujourd'hui. Je me pose la question si cela est possible avec le nombre de tutos sur les dates que j'ai regardé.
Il faut me retourner les fonctions innocupées, malgrès tout elles ont quand même une date de fin puisque elles ont été occupé à un moment donnée.
Peut-être la structure de ma table est à revoir?
Merci encore de ton aide.
En fait j'avais déjà essayé mais cela me rencoie toutes les fonctions avec une dates de fin avant la date d'aujourd'hui. Je me pose la question si cela est possible avec le nombre de tutos sur les dates que j'ai regardé.
Il faut me retourner les fonctions innocupées, malgrès tout elles ont quand même une date de fin puisque elles ont été occupé à un moment donnée.
Peut-être la structure de ma table est à revoir?
Merci encore de ton aide.
bonjour,
Excusez moi d'insister mes encore une grande partie de la journée à essayer de trouver la solution mais en vain.
J'espère encore trouver de l'aide.
je vous remercie.
Excusez moi d'insister mes encore une grande partie de la journée à essayer de trouver la solution mais en vain.
J'espère encore trouver de l'aide.
je vous remercie.
Voici le lien pour la table cdc_fonctions
https://www.cjoint.com/c/FInm1r0rmkM
Merci d'essayer de m'aider
https://www.cjoint.com/c/FInm1r0rmkM
Merci d'essayer de m'aider
Bonjour,
avec les 2 liens des captures de mes tables, cela t'aiderai à mieux comprendre pour essayez de m'aider s'il te plait? je suis perdu.
Je te remercie.
Bonne nuit
avec les 2 liens des captures de mes tables, cela t'aiderai à mieux comprendre pour essayez de m'aider s'il te plait? je suis perdu.
Je te remercie.
Bonne nuit
Bonjour
La table cdc_fonctions
https://www.cjoint.com/c/FIoe7d5POUM
La table cdc_gerer
https://www.cjoint.com/c/FIofauHz1iM
La table cdc_personnes
https://www.cjoint.com/c/FIofsICB1OM
Je te remercie pour ton aide
Bonne journée
La table cdc_fonctions
https://www.cjoint.com/c/FIoe7d5POUM
La table cdc_gerer
https://www.cjoint.com/c/FIofauHz1iM
La table cdc_personnes
https://www.cjoint.com/c/FIofsICB1OM
Je te remercie pour ton aide
Bonne journée
Bonjour
Personnes pour essayer de me venir en aide s'ils vous plait.
Cela viens bien de ma requète en fait si vous pouvez déplacer ce post comme me l'a proposé "jordane45" en vous remerciant.
J'essaie de tourner ma requète dans tous les sens mais je n'y arrive pas.
Merci.
Personnes pour essayer de me venir en aide s'ils vous plait.
Cela viens bien de ma requète en fait si vous pouvez déplacer ce post comme me l'a proposé "jordane45" en vous remerciant.
J'essaie de tourner ma requète dans tous les sens mais je n'y arrive pas.
Merci.
Après avoir chargé tes données et regarder ce qu'il y avait dedans... je ne suis plus très sûr de ce que tu cherches à obtenir.....
Pourrais tu nous faire un dessin ? ( dans un tableau excel... présente nous ce que tu souhaites obtenir comme tableau en te basant sur les données que tu nous as transmis sur ci-joint)
Pourrais tu nous faire un dessin ? ( dans un tableau excel... présente nous ce que tu souhaites obtenir comme tableau en te basant sur les données que tu nous as transmis sur ci-joint)
Bonjour,
Comme convenu je te joint le fichier excel cela vous montre exactement ce que je souhaiterai obtenir.
Encore merci de m'aider
https://www.cjoint.com/c/FIsegiNAPjM
Comme convenu je te joint le fichier excel cela vous montre exactement ce que je souhaiterai obtenir.
Encore merci de m'aider
https://www.cjoint.com/c/FIsegiNAPjM
Bonjour
Je suis toujours à la recherche d'une solution, si une personne pourrai m'aider s'ils vous plait
Je vous remercie.
Bonne journée
Je suis toujours à la recherche d'une solution, si une personne pourrai m'aider s'ils vous plait
Je vous remercie.
Bonne journée
J'ai regardé tes données..... et voulu les adapter à ton tableau....
Le problème .. c'est que ton tableau Excel ne peut pas correspondre.... ou alors tu ne nous as pas tout dit...
Si je prends l'exemple du président....
Dans ton tableau Excel tu mets :
Président: CHIABERTO Gilbert
Hors.. dans les données Excel on trouve :

Donc... comment sais tu que c'est Gilbert le président... et non Marie-Christine ??
De plus... vu les dates de "fin" .. il ne devrait même pas y avoir de président en fait.....
Et c'est pareil pour toutes tes autres lignes.....
Au passage.. dans ta BDD .. la date de fin MAX est le 2016-03-31 ... donc autant dire qu'il n'y a plus personne en poste .....
Lorsque je t'ai demandé un "dessin" .. je t'ai bien dit : En te basant sur les données que tu nous mis à disposition....
Donc soit ton dessin est faux... soit les données fournies ne nous permettent pas de réaliser ce que tu veux...
Voilou.
Le problème .. c'est que ton tableau Excel ne peut pas correspondre.... ou alors tu ne nous as pas tout dit...
Si je prends l'exemple du président....
Dans ton tableau Excel tu mets :
Président: CHIABERTO Gilbert
Hors.. dans les données Excel on trouve :

Donc... comment sais tu que c'est Gilbert le président... et non Marie-Christine ??
De plus... vu les dates de "fin" .. il ne devrait même pas y avoir de président en fait.....
Et c'est pareil pour toutes tes autres lignes.....
Au passage.. dans ta BDD .. la date de fin MAX est le 2016-03-31 ... donc autant dire qu'il n'y a plus personne en poste .....
Lorsque je t'ai demandé un "dessin" .. je t'ai bien dit : En te basant sur les données que tu nous mis à disposition....
Donc soit ton dessin est faux... soit les données fournies ne nous permettent pas de réaliser ce que tu veux...
Voilou.
Bonjour
Si mes données après vérification sont exact. Le dernier fichier excel "responsabilité" est exactement ce que je souhaiterai obtenir aujourd'hui en fait comme nous n'avons pas de président-adjoint le poste est vacant.
Car cette responsabilité ayant était occupé dans le passé il y a obligatoirement une date de fin.
Alors excuse moi peut-être je n'arrive pas expliquer réellement mon soucis mais je peux te garantire que toutes les données sont issues de ma BDD et elles sont toutes exact c'est promis.
En fait le président dans la table cdc_gerer l'idfonc est le 1 est l'idpers est le 2 avec une date de fin à 0 donc c'est le président en exercice.
En fait aujourd'hui ma requète me retourne bien les fonctions dont la date de fin est à 0 mais pas le(les) postes qui sont vacants.
Merci et bonne soirée
Si mes données après vérification sont exact. Le dernier fichier excel "responsabilité" est exactement ce que je souhaiterai obtenir aujourd'hui en fait comme nous n'avons pas de président-adjoint le poste est vacant.
Car cette responsabilité ayant était occupé dans le passé il y a obligatoirement une date de fin.
Alors excuse moi peut-être je n'arrive pas expliquer réellement mon soucis mais je peux te garantire que toutes les données sont issues de ma BDD et elles sont toutes exact c'est promis.
En fait le président dans la table cdc_gerer l'idfonc est le 1 est l'idpers est le 2 avec une date de fin à 0 donc c'est le président en exercice.
En fait aujourd'hui ma requète me retourne bien les fonctions dont la date de fin est à 0 mais pas le(les) postes qui sont vacants.
Merci et bonne soirée