8796 sujets

Développement web côté serveur, CMS

Bonjour,

Je vous explique mon cas de figure. voir schéma !

upload/17281-DATABASE2.jpg

J'ai fais 1 table "Client + Organisme" (je ne sais pas si c bon) pour pouvoir mettre plusieurs contacts pour 1 seul "Organisme".

Cependant, je n'arrive pas à créer ma requête avancé pour pouvoir faire :

je veux pour le "Client A", l'"organisme A"et ces "différents contacts". ( car en effet, la table Client + organisme ne contient que des ID)

Je ne sais pas si c ma table qui n'est pas bonne..

Voici ma requête ( ? )
a écrit :
SELECT Groupe, Organisme (type) , Contact (Contact To ou IDS) FROM Client, organisme, Contact_Organisme


Je ne vois pas comment intégrer la table "Client + Organisme" dans la requête pour pouvoir obtenir exemple :

Client A, l'organisme B + les Différents contacts de l'organisme B


Merci pour votre aide
Modifié par dreadstock (19 Jun 2009 - 11:05)
Bonjour,

Apparement tu est aller un peu trop vite dans ta phase d'analyse des données.

Dans l'état actuel, toutes les données de contact pourraient se trouver dans la table organisme.

Si j'ai bien compris, on part d'une situation où tu as des organismes. Qui regroupent un ou plusieur client. Est-ce que c'est client sont des personnes de contact où juste des client qui n'ont rien à voir avec contact ?

Si les clients sont des personnes de contact et qu'il n'y a qu'une donnée de contact par personne, tu peux mettre toutes les infos de contact dans la table client et tu es bon. Sinon tu garde tes tables client, organisation, contact et tu rajoute une table client_organisation avec les ID des tables client et orga) plus une table client_contact (avec les ID des table client et contact).

Si les client n'ont rien à voir avec l'organisation, tu ajoute juste une table contact_organisation (Avec les ID de contact et orga).

A affiner en fonction de ce que tu veux faire.
Merci pour votre réponse.

En faite,

"Un client" par exemple "Pierre et vacances" à référencé ces résidences sur plusieurs centrales de réservation "organisme". Une centrale de réservation "organisme", à plusieurs "contacts", il y a un contact pour mettre en place le partenariat, un autre contact pour la facturation etc...

Je n'arrive pas organiser ma base, afin que je puisse faire un requête du type :

Client -> Organisme -> (Contact 1 / Contact 2 / Contact 3)

merci


Je pense donc que je dois avoir une table client, une table organisme, une table Contact et une table Contact_Organisme.
Mais je ne vois pas comme lors de ma requête afficher les différents contacts.
J'ai essayé, mais il me manque la table contact_organisme dans ma requête.
SELECT Hôtel (Table client), type (Table organisme), Nom (Table contact) From Client, Organisme


cette requête ne m'affiche q'un seul contact Smiley decu merci
Modifié par dreadstock (19 Jun 2009 - 12:01)
dreadstock a écrit :
cette requête ne m'affiche q'un seul contact Smiley decu merci


C'est normal tu ne lui donne aucune information sur la façon dont les tables sont liées

SELECT Hôtel (Table client), type (Table organisme), Nom (Table contact) 
From Client c, Organisme o, client_organisme co, contact_organisme cor, contact
WHERE c.id = co.client
AND o.id = co.organisme
AND o.id = cor.organisme
AND contact.id = cor.contact
Salut,

Laurie-Anne (et autres), pour info il s'agit de la suite d'un sujet existant (dreadstock, tu aurais pu continuer là-bas, d'ailleurs).

dreadstock a écrit :
Je ne vois pas comment intégrer la table "Client + Organisme" dans la requête pour pouvoir obtenir exemple :
Client A, l'organisme B + les Différents contacts de l'organisme B
Simplement comme ça :
SELECT
    [#olive]# les champs que tu veux sous la forme table.champ[/#]
FROM
    liaison_contact_organisme
    LEFT JOIN liaison_client_organisme ON liaison_client_organisme.ID_organisme = liaison_contact_organisme.ID_organisme

    [#olive]# à ce niveau là, tu as établi les relations entre les clients, les
    # organismes et les contacts. Cependant, tu n'as que des id. Donc tu peux
    # ajouter d'autres liaisons pour récupérer les caractéristiques de ces id :[/#]
	
    [#olive]# si tu veux plus d'infos sur les contacts que simplement leur id[/#]
    LEFT JOIN contact ON contact.ID_contact = liaison_contact_organisme.ID_contact

    [#olive]# si tu veux plus d'infos sur les organismes que simplement leur id[/#]
    LEFT JOIN organisme ON organisme.ID_organisme = liaison_contact_organisme.ID_organisme

    [#olive]# si tu veux plus d'infos sur les clients que simplement leur id[/#]
    LEFT JOIN client ON client.ID_client = liaison_client_organisme.ID_client

[#olive]# tu peux même ajouter un filtre avec une clause WHERE[/#]
Tu remplaceras les noms des champs et tables par ceux de ton choix vu qu'apparemment tu n'as pas encore décidé.
Modifié par marcv (19 Jun 2009 - 13:10)
Super, merci pour votre aide, je vais essayer tout cela et je reviens vous voir pour vous dire si ca a fonctionné . Encore merci pour votre aide

A+
J'ai créer une base super simple pour tester comme celle du début du post. Arés avoir créer a requête, Dreamweaver me dit
a écrit :
MySQL Error#: 1066

Table/alias: 'client_organisme' non unique


Voici ce que j'ai fais, Un formulaire sous forme de liste de la table dynamique "Client" Champ "groupe", à coté un bouton "Submit" pour renvoyer la requête.
En dessous , j'ai fais un tableau pour pouvoir récuperer les infos aprés avoir fait "submit".
J'aimerais récuperer le Champ groupe de la table client, le champ nom et type de la table organisme et le champ contact.

Mais ma requête marche pas la voici : upload/17281-Database.jpg


merci a tous
Salut,

Dans ta requête tu fais :
SELECT
    ...
FROM
    table1,
    table2,
    table3,
    table4,
    table5,
    LEFT JOIN table 5 ON ...
Or, l'exemple que je t'ai donné est plutôt :
SELECT
    ...
FROM
    table1,
    LEFT JOIN table2 ON ...
    LEFT JOIN table3 ON ...
    LEFT JOIN table4 ON ...
    LEFT JOIN table5 ON ...
Peut-être est-ce là la cause de ton message d'erreur.
Modifié par marcv (21 Jun 2009 - 23:52)
c'est la galère les jointures table. Je crois que je vais changer de stratégie et apprendre tout le language sql !
Salut,

dreadstock a écrit :
Je crois que je vais changer de stratégie et apprendre tout le language sql !
C'est effectivement par là qu'il faut commencer (en plus de la normalisation des tables). Smiley cligne

Voir par exemple http://sqlpro.developpez.com/