begin process at 2010 02 10 00:49:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

pb requete


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

pb requete

vendredi 16 juin 2006 à 09:53:16 | pb requete

gabs77

salut,
j'ai un pb avec une requete auquel je ne parviens pas a avoir un resultat satisfaisant
donc en fait g 3 tables :
- une table personnel : id_personnel, nom_pers, ... 
- une table materiel : id_materiel, modele, ... 
- une table affecter : id_materiel, id_personnel //elle resulte d une concatenation entre les 2 premieres

et je voudrais faire une liste de personnel, en prenant en compte le materiel si il y en a au moins un de affecter
 par exemple :  dans la bdd j'ai :

- table personnel : id_personnel, nom_pers, ... 
                              1, dupont, ...
                              2, smith, ...
                              3, langdon, ...
- table materiel : id_materiel, modele, type, ... 
                              1, ACER ASPIRE, ordinateur, ...
                              2, P III , ordinateur, ...
                              3, HP , ordinateur, ...
- table affecter : id_materiel, id_personnel //elle resulte d une concatenation 
                           1,2
                           2,1
                           1,3
et je voudrais un resultat similaire a cela
dupont  -->P III
smith     -->ACER ASPIRE
dupont  -->HP
langdon -->

 $sql= "SELECT * FROM $table_pers,  $table_aff_pers ".
   "WHERE ($table_aff_pers.id_personnel=$table_pers.id_personnel ".
   "OR $table_pers.id_personnel NOT IN (SELECT id_personnel FROM $table_aff_pers) ) ".
   "ORDER BY $table_pers.id_personnel ";
 $req = mysql_query($sql) or die (mysql_error());
 while ( $data = mysql_fetch_array($req))
  {
  echo $data['nom_pers'].'-->'.$data['modele'].'<br>';
  }
le pb est qu'il me sors effectivement toute la liste du personnel mais il fait apparaitre autant de fois kil il y a de concatenation celui qui n'a pas de materiel affecter
vendredi 16 juin 2006 à 10:02:39 | Re : pb requete

PoFMaN

Salut,

essaye de remplacer ton "order by" par "group by"
vendredi 16 juin 2006 à 10:15:10 | Re : pb requete

gabs77

le probleme change desormais voila le resultat ke sa me donne

dupont  -->P III
smith     -->ACER ASPIRE
langdon -->P III

se me donne tous le personnel mais sa donne une affectation la ou il n y en a pas et dupnt apprait qu'une fois avec une seule affectation au lieu de 2
j aimerai si possible ke sa me donne ceci
dupont  -->P III
smith     -->ACER ASPIRE
dupont  -->HP
langdon -->

vendredi 16 juin 2006 à 10:44:26 | Re : pb requete

PoFMaN

arf oui j'avais pas tous vu dsl

normalement avec une requete de ce style tu devrai avoir ce que tu veux (il y a peut être une autre méthode mais je voi pas la quelle):

select $table_pers.*, $table_aff_pers.id_materiel from $table_pers,  $table_aff_pers where $table_aff_pers.id_personnel=$table_pers.id_personnel
union
select $table_pers.*, NULL from $table_pers,  $table_aff_pers where $table_aff_pers.id_personnel!=$table_pers.id_personnel
order by id_personnel
vendredi 16 juin 2006 à 11:13:26 | Re : pb requete

gabs77

sa me semble etre le script kil me faut mais g un message d erreur
est ce ke le UNION est compatible avec Mysql ??

SELECT personnel.*, affectation_personnel.id_materiel FROM personnel, affectation_personnel WHERE affectation_personnel.id_personnel=personnel.id_personnel UNION ( SELECT personnel.*, NULL FROM personnel, affectation_personnel WHERE affectation_personnel.id_personnel<>personnel.id_personnel ) Erreur de syntaxe près de ')' à la ligne 1
vendredi 16 juin 2006 à 11:27:33 | Re : pb requete

PoFMaN

oui enfin ca doit dépendre de la version quand meme avant de te l'envoyer j'ai testé sur mon serveur MySQL(v4.1.12) sinon je suis pas sur du '<>' j'ai jamais utilisé ca en SQL avec '!=' j'ai jamais eu de problèmes,

Et pour les parenthèses du 2ème select j'en ai jamais mis avec un union
vendredi 16 juin 2006 à 11:31:59 | Re : pb requete

gabs77

c bon sa marche !
g continué à chercher un peu tout de meme et j'y suis parvenu
la premiere partie est bonne les parentheses ne sont pas utiles pour l union mais la 2 condition fallait prendre le NOT IN et le tour est joué
je te remercie tu m as bien aidé PoFMaN

SELECT $table_pers.nom_pers, $table_aff_pers.id_materiel FROM $table_pers, $table_aff_pers WHERE $table_pers.id_personnel = $table_aff_pers.id_personnel 
UNION
SELECT $table_pers.nom_pers, NULL FROM $table_pers, $table_aff_pers WHERE $table_pers.id_personnel NOT IN (SELECT id_personnel FROM $table_aff_pers)
vendredi 16 juin 2006 à 11:34:35 | Re : pb requete

PoFMaN

Bizarre ca avec des tables qui fonctionnaient de la même façon j'avai pas eu de probleme
vendredi 16 juin 2006 à 11:47:38 | Re : pb requete

gabs77

ouais j avoue
mais maintenant avec la meme chose g encore un pb
je veu mettre des jointures et voici la réponse que l on me donne
"The used SELECT statements have a different number of columns"


voila le script :
=======
SELECT $table_pers.*, $table_aff_pers.*, $table_site.*, $table_serv.*, $table_pole.* 
FROM $table_pers, $table_aff_pers, $table_site, $table_serv, $table_pole
WHERE $table_aff_pers.id_personnel = $table_pers.id_personnel
AND $table_site.id_site = $table_pers.id_site
AND $table_pers.id_service = $table_serv.id_service
AND $table_serv.id_pole = $table_pole.id_pole
AND $table_pers.technicien = 'T' 
UNION
SELECT $table_pers.*,NULL , $table_site.*, $table_serv.*, $table_pole.*
FROM $table_pers, $table_aff_pers, $table_site, $table_serv, $table_pole
WHERE $table_pers.id_personnel NOT IN (SELECT id_personnel FROM $table_aff_pers) 
AND $table_site.id_site = $table_pers.id_site
AND $table_pers.id_service = $table_serv.id_service
AND $table_serv.id_pole = $table_pole.id_pole
AND $table_pers.technicien = 'T'

vendredi 16 juin 2006 à 11:53:01 | Re : pb requete

gabs77

c bon le pb est résolu en fait l erreur que g fait c que j ai mis une etoile dans le select a la table $table_aff_pers au lieu de cibler un champ

1 2

Cette discussion est classée dans : table, personnel, id, pers, materiel


Répondre à ce message

Sujets en rapport avec ce message

affichage des données qui se trouve dans 3table en relation en php [ par hairia ] bonjourje suis debuitante en php,  j'ai un problème sur l'afichage des données qui se trouve dans 3tables (personnel, contrat, service) qui sont relat Mysql Jointure [ par ricky66 ] Bonsoir,J'ai une base de données qui comprend 2 tables (PERS et CARTES).Table : Pers comprend Id_Pers, Nom_Pers, Prenom_Pers.Table : Cartes comprend I Optimisation de requete et jointure de table [ par longshot41 ] Bonjour, Dans une base j'ai une table "client" -> ID, Nom, Prenom, Ville etc.. une autre par ex. "Animaux" -> ID, Genre que je rempli avec "Chien", "C insertion des donnees dans la base [ par fankamdenise ] salut a tous et merci d'avance pour l'aide que vous pouriez m'apporter. bon mon probleme est au niveau de l'insertion des donnees dans la table projet enregistrer valeur tableau html dans table mysql [ par clem76630 ] Bonjour, Cela fait longtemps que je m'aide de ce forum lors du développement de mes petits sites ou applications personnel. Mais la je tombe sur os, envoyer mail a plusieurs destinataires [ par michelo34 ] bonjour,tout d'abord merci a toutes les personnes qui contribue à l'alimentation du forum car pour un novice développeur les conseils qui y sont prodi requet SQL et timestamp php [ par rapbizz ] Bonjour a tous , voila j'expose mon problemej'ai creer un systeme de newset j ai fé une partie admin qui me permet de voir les commentaire , creer les requete sql [ par noun3t ] Bonjour, Je viens vers vous pour une aide sur les inner join. Je n'en ai jamais fait mais en connais l'existence. pour mon problème j'ai 3 table. u Concept de structure... [ par tabasco_nemesis ] Bonjour à tous. Je suis en train de réaliser un "framework" perso : pour comprendre, et pour savoir quoi faire et où et comment lorsque je suis amené TreeView à partir d'une table MySQL [ par crazygogo ] Bonjour à tous,j'ai cherché pas mal sur ce site et sur le web mais pas moyen de trouver la solution à mon problème (pourtant ça me semble être un clas


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales