Cardinalité un à plusieurs

Répondre
ago
le 21/07/2004 à 22:54
ago
Bonjour à tous,

Je reviens vers vous pour une chose que je pensais simple au départ et qui me semble de plus en plus tordu.

Voilà, j'ai mis en place une base mysql composée de 8 tables contenant des infos diverses et variées et des scripts en php pour communiquer avec ces tables. Enfin bon j'ai fais l'essai du bon fonctionnement de mes scripts php sur trois tables qui avaient des relations un à un ...ça pas de prob.

Maintenant je n'avais pas encore considéré que deux de mes tables avaient une relation un à plusieurs avec ma table 'identification'.

Je m'explique, ma première table posséde un client_id (table 'identification') qui me permet de faire ma relation avec mes tables un à un ou un enregistrement sur la table 'identification est lié à un autre enregistrement sur mes tables 'contact', 'localisation'....dites moi si je me trompe...

MAIS, j'ai les tables 'contrats' et 'matériels' ou le client_id n°2 (par ex) peut posséder plusieurs enregistrements sur les tables 'contrats' et/ou 'matériels' (un clients pouvant avoir signé plusieurs contrats et avoir plusieurs matériel....

J'ai étais me renseigner du côté de Merise ou j'ai perdu mon latin et ma patience et j'ai voyagé sur quelques forum dans l'espoir de trouver une question similaire avec déjà des réponses...mais pour l'instant...si j'ai bien compris le truc serai de créer une table de jointure du style 'client_id''contrats_id''materiels_id'....

Est-ce que cette solution est la meilleur ou quelqu'un peut-il me sortir de cette tour de babel...

D'avance Merci pour les conseils...

Ago
moogli
le 21/07/2004 à 23:13
moogli
Salut,

Moi je dirais de prendre l'ascenseur smiley

Plus sérieusement ta jointure existe déja.

Je m'explique tu as (si j'ai bien compris) une tables client avec l' id_client. C'est avec cette table que tu fait ta jointure en te servant de l'id_client.
Par exemple tu veut tout les contrat et tout les matériel du client x (ainsi que sont nom
=> SELECT clients.id_client as client, contrat,matériel FROM client,contrat,matériel WHERE nom_client="'.$nom.'" AND contrat.id_client=client AND materiel.id_client=client;

le as client permet de changer id_client en client (plus simple pour moi mais tu peut l'enlever).
Ensuite contrat.id_client represente le chant id_client de la table contrat.
de manière génral on exprime table.champ_de_la_table
regarde ce cour l'es pas mal http://www.lephpfacile.com/cours/index.php?page_a_afficher=14.

J'espère que je sui sompréhensible (sa a pas l'air).

@+
Il en faut peu pour être heureux !!!!!
moogli
le 21/07/2004 à 23:16
moogli
J'ai oublié de dire que c'est le champ id_client de toute tes tables qui fait la jointure car il represente le client conserné et cet id est unique.
J'ai pris pour base que la table clients contient les infos client (nom tel.....).

Donc pour avoir ce que le client a dans plusieur table il faut utiliser des clause imbrique dans le Where avec AND et OR

Regarde les cours pour + d'infos
@+
Il en faut peu pour être heureux !!!!!
bibi
le 22/07/2004 à 00:19
bibi
moogli un conseil :

répond avant de boire smiley
commit suicide
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours