Bonjour tout le monde et bonnes fêtes !!!
Je vais essayé d'être aussi clair que possible, voilà ce dont je dispose :
- une table rdv (rendez-vous) avec les champs id, date, heure, motif et owner_ref (la référence de la personne du rendez-vous)
- une table client avec entre autre les champs id, ref, nom et prénom
- une table contact avec entre les champs id, ref, nom et prénom
- une table fournisseur avec entre autres les champs id, ref et nom
Enregistrement : lorsque j'enregistre un rendez-vous dans la table rdv, le champ owner_ref récupère la ref d'un client, d'un contact ou d'un fournisseur. Pour les autres champs vous l'avez deviné, pas la peine de vous faire un dessin.
Consultation : c'est là que je bloque. Avant ma table rdv ne contenait que les rdv clients, donc la requête select était très simple et d'ailleurs je n'utilisais pas la ref du client mais l'id. Maintenant que je cherche à pouvoir aussi bien rentrer les rendez-vous des clients que ceux des contact et des fournisseurs je me retrouve un peu coincé. Je cherche à faire une requête qui me retourne la date du rendez-vous, l'heure du rendez-vous, le nom de la personne, selon le champ owner_ref. Par exemple :
je voudrais qu'en faisant une interrogation sur la date du 15/12/2005 j'obtienne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 table rdv : id | owner_ref | date | heure | 1 | cli-0001 | 2005/12/15 | 15:12:00 | 2 | frn-0001 | 2005/12/15 | 16:12:00 | 3 | cnt-0001 | 2005/12/15 | 17:12:00 | table client id | ref | nom | prénom | 1 | cli-0001 | cli | ent | table fournisseur id | ref | nom 1 | frn-0001 | fourni table contact id | ref | nom | prénom 1 | cnt-0001 | cont | act
comme j'utilise le C#, j'ai trouvé une astuce en manipulant les tables de mon dataset, ça consiste à créer 3 tables :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 date | heure | nom 15/12/2005 | 15:12:00 | cli 15/12/2005 | 16:12:00 | fourni 15/12/2005 | 17:12:00 | cont
- rendez-vous des clients
- rendez-vous des contacts
- rendez-vous des fournisseurs
ensuite fusionner ces 3 tables en une seule et la mettre en source d'un datagrid. Mais je trouve cette astuce lourde et j'aimerais le faire par requete sous MySQL directement. Auriez-vous une idée s'il vous plait ?
j'ai pensé faire un SELECT avec des IF du genre :
mais je me doute que ça ne doit pas fonctionner des masses ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT date, heure (SELECT nom FROM client WHERE ref = owner_ref IF owner_ref LIKE 'cli') AS nom, (SELECT nom FROM contact WHERE ref = owner_ref IF owner_ref LIKE 'cnt') AS nom, (SELECT nom FROM fournisseur WHERE ref = owner_ref IF owner_ref LIKE 'frn') AS nom FROM rdv WHERE date = 2005/12/15
Partager