2012-12-26 1 views
2

J'ai trois tables dans une base de données SQL. Ce système relationnel a été conçu par quelqu'un d'autre mais on m'a demandé de créer une nouvelle requête car il ne travaille plus pour l'entreprise. Je vais utiliser des noms d'échantillons à des fins de confidentialité.Comment interroger trois tables en fonction d'un seul champ

  1. client
    customer_id
    product_code
    product_color
    product_size
    ...

  2. customer_link
    CUSTOMER_ID
    product_i d

  3. customer_stats
    product_id
    product_actual_product
    product_actual_color
    product_actual_size
    ...

Ce système a été conçu pour les utilisateurs d'entrer des informations dans le système et ont de multiples produits pour chaque client. Dans le client, les champs affichés sont tous les codes liés par customer_id de (1) à (2). Deux peuvent alors avoir plusieurs liens entre (2) et (3) sur la base de plusieurs enregistrements dans (2) avec les mêmes id_client et id_produit. (3) a le product_id lié et le texte réel pour les codes énumérés dans (1). En résumé, j'ai besoin d'une instruction SELECT basée sur les champs de (1) mais avec les données stockées dans (3). Wow, je suis confus et pourrais vraiment utiliser de l'aide.

+1

vous devriez peut-être aussi indiquer quel système base de données vous en utilisant. – s1lence

+0

Etes-vous sûr que la table Customer contient des informations sur le code produit, la couleur, la taille, etc.? Si c'est le cas, alors le design est probablement horriblement brisé. J'espère sincèrement que c'est une erreur de copier-coller! (Et je ne suis pas entièrement convaincu par les colonnes dans la table des statistiques des clients non plus ... mais je me rends compte que c'est une simulation de ce qui est dans la vraie base de données.) –

+0

Il serait utile si vous voulez mettre quelques exemples de données sortie. –

Répondre

4

Cela devrait être assez simple,

SELECT a.*, c.* 
FROM customer a 
     INNER JOIN customer_link b 
      ON a.customer_ID = b.customer_ID 
     INNER JOIN Customer_stats c 
      ON b.product_id = c.product_id 

Pour en savoir plus sur les jointures, voir le lien ci-dessous

Questions connexes