Jointure

ben1403 Messages postés 21 Statut Membre -  
ben1403 Messages postés 21 Statut Membre -
Bonjour, j'ai 2 tables: personnes et domaines.

je veux afficher pour une personne, ses différents domaines sur la mem ligne. voici ce ke mon code affiche:

jean : Agriculture
jean : santé

or, moi je voudrais afficher ca:

jean : Agriculture - santé

merci

2 réponses

Tantor8 Messages postés 46 Statut Membre 2
 
Salut,

je ne sais pas en quelle langage tu veux faire cela. Mais je pense qu'une simple concaténation de chaine de caractère suffirait.

exemple en php:
$chaine="";

tu récupère le nom dans $nom puis les donné on dira $donné1 et $donné2 et tu fait la concaténation:

$chaine.=$nom."=".$donné1."-".$donné2;


J'ai pas tester mais sa ressemble à cela. Après faudrais que tu donne plus de précisions sur le language et les données.

a+
0
ben1403 Messages postés 21 Statut Membre
 
c'est fait en php/mysql, voici la structure des tables concernees:

CREATE TABLE `contact` (
`idcont` varchar(14) NOT NULL,
`orgId` varchar(14) default NULL,
`officeId` varchar(14) default NULL,
`salutation` varchar(10) default NULL,
`firstName` varchar(50) NOT NULL default '',
`lastName` varchar(50) NOT NULL default '',
`title` varchar(50) default NULL,
`phone1` varchar(100) default NULL,
`phone2` varchar(100) default NULL,
PRIMARY KEY (`idcont`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `sector` (
`idsec` varchar(14) NOT NULL,
`name` varchar(55) NOT NULL default '',
PRIMARY KEY (`idsec`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


CREATE TABLE `contsec` (
`idcont` varchar(14) NOT NULL,
`idsec` varchar(14) NOT NULL,
PRIMARY KEY (`idcont`,`idsec`),
KEY `abfkindex1` (`idcont`),
KEY `abfkindex2` (`idsec`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
0
Tantor8 Messages postés 46 Statut Membre 2 > ben1403 Messages postés 21 Statut Membre
 
Si j'ai bien compris, tu doit récupéré les nom de chaque contact puis récupérer tous les enregistrements de ce contact dans la table 'contsec'. Et tu enregistre tout les 'idsec' associé a ce contact.
Après quoi tu recherche dans la table 'sector' ce a koi correspond le 'idsec' . Puis tu affiche avec la concaténation comme j'ai fait au dessus.

Pour te donné un aperçu du code cela donne quelque chose comme sa:
récupération des contact:
 $requete="SELECT idcont FROM contact ";
	    $resultat = ExecRequete ($requete, $connexion);
	    $tabcont=mysql_fetch_assoc($resultat);

puis tu parcour le tableau des contact et tu recherche les secteur de chaque contact:
 foreach($tabcont as $cont){
                $chaine=$cont.":";
                $requete2="SELECT idsec FROM contsec WHERE idcont='$cont' ";
	        $resultat2 = ExecRequete ($requete2, $connexion);
	        $tabsec=mysql_fetch_assoc($resultat2);
                 foreach( $tabsec as $sec){
                       $requete3="SELECT name FROM contsec WHERE idsec='$sec' ";
	               $resultat3 = ExecRequete ($requete3, $connexion);
	               $tabsec=mysql_fetch_assoc($resultat3);
                       foreach($tabsec as $nom){
                             $chaine.=" ".$nom;
                       }
                 }
             }


$conexion est le resultat d'une fonction qui me permet de me connecter à la base.

Voila, c'est pas tester nom plus mais c'est pour te donné une idée, après c'est a toi de l'adapter à ton code. a+



0
ben1403 Messages postés 21 Statut Membre > Tantor8 Messages postés 46 Statut Membre
 
merci, je vais tester
0
Mimiste Messages postés 1159 Statut Membre 206
 
hello

qu'il t'affiche

jean : Agriculture
jean : santé

est tout a fais normal ça prouve que la base est bien faite, maintenant c'est dans le code de ton programme que tu doit exploiter ces résultats et les formater comme tu veux
0