Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Jointure [ Base de données / MySQL ] (shadow1779)

mardi 12 juin 2007 à 21:22:02 | Jointure

shadow1779

Membre Club

Bonsoir,

j'aimerai m'améliorer en PHP/MySQL en commencant avec les jointures, j'aimerai pour sa être un peu guidé car malgré les tutos j'ai du mal: voici la question d'origine que j'ai pu avoir, typique d'un test d'embauche en tant que développeur php:

- Afficher les clients (avec leur commercial) par région - voir exemple ci contre

<b>$region</b>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
<br>

<b>$region</b>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
-$client_nom $client_prenom :: ($commercial_nom $commercial_prenom) <br>
<br>

etc....

pour cela on a le shéma suivant:
table: clients
- id (integer)
- civilite enum('Mme','M','Mlle')
- nom (varchar)
- prenom (varchar)
- commercial_id: (integer)

table: commerciaux
- id: (integer)
- nom (varchar)
- prenom
- telephone (varchar)
- region_id (integer)

table: regions
- id (integer)
- libelle (varchar)


Voila tout, si vous pourriez me faire un exemple, je demande pas la soluce mais la manière de traiter vraiment les données par jointures avec 3 tables, sachant que commercial_id = id de la table commerciaux et que region_id = id de la table regions

Merci d'avance


mardi 12 juin 2007 à 21:42:00 | Re : Jointure

sebastien_et_typh

tu peut faire :
select * from clients, commerciaux, regions where clients.commercial_id=commerciaux.id and commerciaux.region_id=regions.id

voila je pense que ca doit etre ca mais pas sur..

mardi 12 juin 2007 à 21:44:40 | Re : Jointure

shadow1779

Membre Club

ouai mais comment je retourne mes values ensuite afin de formater ma page comme je l'ai mise :s

mardi 12 juin 2007 à 22:05:13 | Re : Jointure

sebastien_et_typh

donc tu fais :
$query="select clients.nom,clients.prenom,commerciaux.nom,commerciaux.prenom,regions.libelle from clients, commerciaux, regions where clients.commercial_id=commerciaux.id and commerciaux.region_id=regions.id";
$result=mysql_query($query);
$row=mysql_fetch_array($result);

<b>$row[4]</b>
echo $row[0]. $row[1]." :: (".$row[2].$row[3]) ."<br>";
echo $row[0]. $row[1]." :: (".$row[2].$row[3]) ."<br>";
echo $row[0]. $row[1]." :: (".$row[2].$row[3]) ."<br>";
echo "<br>";

ca devrai marcher

mercredi 13 juin 2007 à 08:09:50 | Re : Jointure

shadow1779

Membre Club

en fait j'ai fais a peu près ca mais je ne vois pas pourquoi ca ne marche pas, un peu d'aide :s

http://rafb.net/p/wA9ca120.html

coté code ca me ressort:

- .$prenom_client $nom_commercial ($prenom_commercial $region)


mercredi 13 juin 2007 à 16:24:08 | Re : Jointure

sebastien_et_typh

est ce ke tu peu me montrer le bout de code que tu a utiliser ou c exactement le meme?La structure de ta base de donnee c bien celle donnee plus haut?

jeudi 14 juin 2007 à 07:51:32 | Re : Jointure

shadow1779

Membre Club
voila le code complet si ca peut t'aider mais la requete reste la même

http://rafb.net/p/WCtWZb76.html


vraiment pas d'idée, au pire ya pas moyen de faire un fetch_assoc plutot qu'un fetch_array, avec un retour de données plus explicite genre:

while($data = mysql_fetch_assoc($req))
{
$nom_commercial = $data['commerciaux']['nom']
$prenom_commercial = $data['commerciaux']['prenom'];
$civilite_client = $data['clients']['civilite'];
$nom_client = $data['clients']['nom'];
$prenom_client = $data['clients']['civilite'];
$region = $data['regions']['libelle'];
}

au moins yaurrai pas de confusion possible

jeudi 14 juin 2007 à 13:14:47 | Re : Jointure

sebastien_et_typh

si tu a utiliser la meme requete que sur le lien donner tu a essayer de mettre $region = $data['libelle'] au lieu de $region = $data['regions']['libelle']
ce n'est qu'une idee

jeudi 14 juin 2007 à 16:10:34 | Re : Jointure

shadow1779

Membre Club

ouai mais certains champs on les mêmes noms, exemple:
-id est dans commerciaux, mais aussi dans clients et dans région, ce n'est pas le même mais c'est toujours un id, donc il ne saurra pas comment le traiter :s


jeudi 14 juin 2007 à 16:46:17 | Re : Jointure

sebastien_et_typh

$result=mysql_query("select clients.nom as 'nomClient',clients.prenom as 'prenomClient',commerciaux.nom as 'commercialNom',commerciaux.prenom as 'commercialPrenom'
,regions.libelle as 'Region' from clients, commerciaux, regions where clients.commercial_id=commerciaux.id and commerciaux.region_id=regions.id");
 while ($data=mysql_fetch_array($result)){
     echo $data['Region'];
    echo $row['clientNom']. $row['clientPrenom']." :: (".$row['commercialNom'].$row['commercialPrenom'].")<br>";
 }

je pense quand mettant ce code ca devrait fonctionner et si tu ve rajouter les id tu dois les renomee avec as dans la requete pour pouvoir les distingue



1 2

Cette discussion est classé dans : table, client, id, prenom, commercial


Répondre à ce message

Sujets en rapport avec ce message

relation entre 2 tables [ par rastagnol ] slt !!!voila G un pb pour mettre 2 tables en relations ... je ne sais pas trop comment m'y prendre. G une table commandes avec un champ client_id et u Probleme jonction de table [ par copper4 ] Bonjour à tous. J'ai une question toute bete. J'ai 1 table clients id nom prenom commentaire ... Et 1 table paiements id create table innodb [ par fakoly77 ] bonjour,j'arrive pas à créer une table qui comporte une clé étrangère d'une première table.create table client (id_client VARCHAR(255) NOT NULL PRIMAR requete SQL 2 table [ par xactise ] Bonjour a tous, encore moi pour un problème de requête (va vraiment falloir que jlise de la doc approfondie a ce sujet...)Je vous expose mon problème. la creation des tables sous mysql [ par ikramta ] bonjour tout le monde et bon courage. je suis entrain de crée une BD qui contient ces 2 table 'information' et 'longue': create table longue ( id_lo Enregistrer plusieurs résultats d'un foreach dans une table [ par cyse ] Bonjour,J'ai réussis à mettre en place des checkbox avec plusieurs choix possibles, et à récupérer les id de chacun des résultats séparés par un espac PHP, boucles while et formulaires [ par rinpe ] Bonjour,Cela fait maintenant trop de temps que je cherche désespérement une solution en parcourant les forums, mais aucun des cas que j'ai lu ne resse Combobox anev inpute [ par salut_nabil ] salut pour tout le mondeje suis sur un tout petit projet et je vient de le commencer est sa commence les problemme mon problème c'est que j'ai une tab modifier un champ [ par brudao ] Bonjour, je n'arrive pas à modifier le type d'un champ d'une bd mysql en php. exemple: je cree une table: $req="CREATE TABLE 'ma_table ( id int(11) no Probleme avec une methode recursive [ par lowkey ] Salut à tous !!Voici ma methode d'une classe que je suis en train de créer. Il y a un seul attribur : $liste, en private.[code]public function affiche


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.