IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

[C#/MySQL] Requete conditionelle


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 109
    Points
    109
    Par défaut [C#/MySQL] Requete conditionelle
    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 :
    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
    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
     
           date    |    heure   | nom  
    15/12/2005 | 15:12:00 | cli
    15/12/2005 | 16:12:00 | fourni
    15/12/2005 | 17:12:00 | cont
    comme j'utilise le C#, j'ai trouvé une astuce en manipulant les tables de mon dataset, ça consiste à créer 3 tables :
    - 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 :
    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
    mais je me doute que ça ne doit pas fonctionner des masses ...
    ADSC Informatique : Assistance & Dépannage Informatique sur Toulouse et région (www.adscinformatique.fr)

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Je n'ai pas testé sous mySQL, mais cela respecte la norme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT r.date, r.heure, p.nom
    FROM rdv INNER JOIN (SELECT ref, Nom FROM Client
               UNION ALL SELECT ref, Nom FROM Fournisseur
               UNION ALL SELECT ref, Nom FROM Contact) p ON r.owner_ref = p.ref
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2005
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 98
    Points : 109
    Points
    109
    Par défaut
    ok merci je vais essayer ça.
    ADSC Informatique : Assistance & Dépannage Informatique sur Toulouse et région (www.adscinformatique.fr)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Requetes imbriquées, problème de groupage
    Par cdelamarre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/02/2006, 21h16
  2. [MySQL] requete avec cumul mois par mois
    Par michaelbob dans le forum Langage SQL
    Réponses: 5
    Dernier message: 16/01/2006, 15h32
  3. EXPORT mysql, requete BACKUP
    Par kichemans dans le forum Administration
    Réponses: 6
    Dernier message: 28/12/2005, 17h02
  4. [mySQL]Requete qui prend 100 % du CPU et n'aboutit pas
    Par LE NEINDRE dans le forum Requêtes
    Réponses: 20
    Dernier message: 12/10/2005, 09h36
  5. Réponses: 19
    Dernier message: 01/04/2004, 14h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo