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

Langage SQL Discussion :

[MySQL]Aide pour requête simple


Sujet :

Langage SQL

  1. #1
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut [MySQL]Aide pour requête simple
    Bonjour à tous,

    je dois réaliser la requête suivante, et vu que je suis une vraie quiche en SQL j'aurais besoin de l'aide de quelqu'un...

    - J'ai 2 tables (Commandes et Personnes), liées par 2 relations 1-1. Les clés étrangères sont dans la table Commandes. Il y a une clé pour la personne de facturation et une pour la personne de livraison. Voici en gros la structure de mes tables:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Commandes
      +id
      +date
      +FK_facturation (reference Personnes)
      +FK_livraison (reference Personnes)
      ...
     
    Personnes
      +id
      +nom
      +prénom
      +...
    - J'aimerais récupérer toutes les informations utiles dans des champs de ma requête, en une seule fois. En gros, j'aimerais un ResultSet comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    id, date, FK_facturation, FK_livraison, livraison_nom, livraison_prénom, facturation_nom, facturation_prénom
    ===============
    1 | 2007-12-12 | 1 | 2 | Dupont | Jean | Durand | Paul
    ...
    Seulement, je ne sais pas quoi utiliser... J'ai essayé d'imbriquer plusieurs select, genre "select id, date, (select * from Personnes where Personnes.id = id) from Order" mais ça ne marche pas. J'ai aussi essayé les JOIN (LEFT, RIGHT, ...) mais ça ne marche pas mieux...

    Comment faire?

    Merci d'avance

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Il faut tout d'abort cerné le problème.

    Une personne peut avoir plusieurs commande je suppose ???
    Si c'est le cas il te faut une table de transition dans laquelle tu vas stocker les numéros de commande rattacher a une personne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Commandes
      +id
      +date
      +FK_facturation (reference Personnes) -- Perso j'aime pas 
      +FK_livraison (reference Personnes) -- Perso j'aime pas 
      ...
     
    Personnes
      +id
      +nom
      +prénom
      +...
    Il faudra une table du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Commande_perso
    ID_perso
    ID_commande
    suite a ca il te suffira de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT b.id, b.date, c.nom, c.prenom... etc from Commande_perso a, Commande b, Personnes c
    WHERE a.ID_perso = c.ID_perso 
    AND a.ID_commande = b.ID_commande

  3. #3
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    Non, une personne ne peut pas avoir plusieurs commandes...

    ("Personnes" est un simple container pour les adresses, à usage unique).
    Chaque commande a son adresse de facturation et de livraison, et si je veux changer l'adresse de livraison d'une commande ça ne doit pas changer ailleurs que pour la commande courante.

    En réfléchissant un peu, je suis arrivé à faire ce que je voulais

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    SELECT 
      _O.ORDE_id as id,   
      _O.ORDE_paymode as paymode, 
      _O.ORDE_giftpack as giftpack, 
      _O.ORDE_placeddatetime as placeddatetime,
     
      O.PEOP_name as orderername,
      O.PEOP_firstname as ordererfirstname,
      O.PEOP_address as ordereraddress,
      O.PEOP_zip as ordererzip,
      O.PEOP_city as orderercity,  
      O.PEOP_country as orderercountry,
      O.PEOP_mail as orderermail,
     
      D.PEOP_name as deliveryname,
      D.PEOP_firstname as deliveryfirstname,
      D.PEOP_address as deliveryaddress,
      D.PEOP_zip as deliveryzip,
      D.PEOP_city as deliverycity,
      D.PEOP_country as deliverycountry,
      D.PEOP_mail as deliverymail    
    FROM 
      ORDERS _O
     
    LEFT JOIN
      PEOPLE D ON D.PEOP_id = _O.ORDE_PEOP_delivery
    LEFT JOIN
      PEOPLE O ON O.PEOP_id = _O.ORDE_PEOP_orderer
     
    WHERE 
      ORDE_id = 1

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

Discussions similaires

  1. Aide pour requête SELECT relativement simple.
    Par Ambuletz dans le forum Requêtes
    Réponses: 14
    Dernier message: 02/03/2010, 10h27
  2. Aide pour requête SQL assez simple
    Par Pilloutou dans le forum Langage SQL
    Réponses: 15
    Dernier message: 28/03/2008, 15h07
  3. Besoin d'aide pour requête simple
    Par vallica dans le forum Requêtes
    Réponses: 6
    Dernier message: 16/02/2007, 09h33
  4. [mySQL] Aide pour une requête
    Par DevCR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/02/2007, 14h04
  5. [MySQL] Aide pour une requête
    Par Rototo001 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/02/2007, 10h57

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