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 :

Vue sur plusieurs tables


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Points : 70
    Points
    70
    Par défaut Vue sur plusieurs tables
    Bonjour, je me retrouve face à un problème :

    J'ai une structure comme ceci :

    - Invoice (entête)
    - Customer (1 seul)
    - tender (moyens de payement 11)
    - divers infos et commentaires
    - items (autant que de produits facturés)

    Je veux créer une vue pour mettre tout cela à plat avec un produit par ligne en répétant l'entête autant que nécessaire.

    Pour ce faire je voulais mettre "en colonne" les moyens de payement et les commentaires etc.. pour ne pas dupliquer une ligne autant de fois qu'il y a des moyens de payement par exemple (normalement c'est là que je suis plutôt moyennement clair x) )

    J'avais essayé de faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT i.invc_sid,
    i.sbs_no,
    i.store_no,
    c.cust_id,
    c.store_no,
    c.station,
    (SELECT amt FROM INVC_TENDER WHERE tender_type = 0)  AS Cash,
    (SELECT amt FROM INVC_TENDER WHERE tender_type = 1)  AS cheque
    FROM INVOICE i, CUSTOMER c, INVC_TENDER t
    Mais ce n'est pas bon.

    J'ai aperçu aussi une forme comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (CASE WHEN t.tender_type = 0 THEN t.AMT END) AS Cash,
    Mais je ne comprend pas...

    Merci de votre aide.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Essaie plutôt comme ça, avec la syntaxe normalisée depuis 1992 pour les jointures, dont il manque d'ailleurs les conditions dans ta requête :
    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
    SELECT i.invc_sid,
      i.sbs_no,
      i.store_no,
      c.cust_id,
      c.store_no,
      c.station,
      CASE
        WHEN t.tender_type = 0 THEN t.amt
      END AS Cash,
      CASE
        WHEN t.tender_type = 1 THEN t.amt
      END AS cheque
    FROM INVOICE i
    INNER JOIN CUSTOMER c ON -- manque condition de jointure
    INNER JOIN INVC_TENDER t ON -- manque condition de jointure
    La structure CASE WHEN signifie :
    Dans le cas où la colonne t.tender_type est égale à 0 alors on prend le contenu de la colonne t.amt et on donne pour nom à cette colonne 'Cash'.
    Idem pour la condition t.tender_type = 1 ==> colonne baptisée 'cheque'.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    132
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2009
    Messages : 132
    Points : 70
    Points
    70
    Par défaut
    Ah d'accord, et bien merci c'est plus clair comme cela.

    Merci de votre aide.

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

Discussions similaires

  1. vue sur plusieurs tables
    Par lynnaryas dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 30/04/2012, 18h16
  2. [Avis] Vue avec union sur plusieurs tables
    Par adiGuba dans le forum Langage SQL
    Réponses: 0
    Dernier message: 22/09/2008, 11h50
  3. Encore une requête complexe sur plusieurs tables
    Par DenPro dans le forum Langage SQL
    Réponses: 5
    Dernier message: 09/12/2003, 19h05
  4. Requête complexe sur plusieurs table
    Par DenPro dans le forum Langage SQL
    Réponses: 13
    Dernier message: 25/11/2003, 17h50
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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