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 :

Aide sur sous requête


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Par défaut Aide sur sous requête
    Bonjour à tous,

    J'ai un SQL basique :

    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 JMNO47 as Jobnumber, 
    SJBN47 as subjob, 
    FLT155 as description, 
    DTDT47 as Date, 
    TSTP47 as Type, 
    REFN47 as ItemCode, 
    PDES35 as ItemDescription, 
    TQTY47 as Qty,  
    LIST20 as PriceList, 
    BRTV47 as UnitPrice, 
    BRTV47*TQTY47 as TotalValue 
    FROM AULSMCT2F2.EQJ47 
     
    INNER JOIN AULSMCT2F2.EQP55 on 
    AULSMCT2F2.EQJ47.CONO47 = AULSMCT2F2.EQP55.CONO55 
    AND AULSMCT2F2.EQJ47.JMNO47 = AULSMCT2F2.EQP55.JOBN55 
    AND AULSMCT2F2.EQJ47.SJBN47 = AULSMCT2F2.EQP55.SJBN55 
    AND AULSMCT2F2.EQJ47.TSKN47 = AULSMCT2F2.EQP55.TSKN55 
     
    LEFT OUTER JOIN AULSMCT2F2.INP35 on 
    AULSMCT2F2.EQJ47.CONO47 = AULSMCT2F2.INP35.CONO35 
    AND AULSMCT2F2.EQJ47.REFN47 = AULSMCT2F2.INP35.PNUM35 
     
    LEFT OUTER JOIN AULSMCT2F2.OEP20 on 
    AULSMCT2F2.EQP55.CONO55 = AULSMCT2F2.OEP20.CONO20 
    AND AULSMCT2F2.EQP55.ACNO55 = AULSMCT2F2.OEP20.CUSN20 
    AND AULSMCT2F2.EQP55.LOCN55 = AULSMCT2F2.OEP20.DSEQ20 
     
     
    WHERE CONO47='EU' 
    AND JMNO47 IN('7013277') 
    AND TSTP47='INV'
    qui génère le résultat suivant (voir fichier joint)
    Je voudrais rajouter a ma requête une colonne contenant le prix de l'item (REFN47) dans la price list correspondante (LIST20 = L01 dans cet exemple).
    Le fichier contenant les infos de la price list est OEP20 avec les champs suivants :
    LIST20 : price list
    DTEF20 : date d'effectivité. Chaque Item possède plusieurs date d'effectivité et la requête devra sélectionner la date d'effectivité inférieure la plus proche de la date de la facture (DTDT47).
    CATN20 : Item code

    Je pense qu'une sous requête dans une close having doit pouvoir faire ca mais je n'y arrive pas.

    J'espère avoir été clair et attend impatiemment votre aide.

    Merci d'avance.

    Zebulo80
    Images attachées Images attachées  

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    Sachez d'abord qu'une base de données contient des tables et non des fichiers... Si vous en êtes resté au fichiers, faites du Cobol et ne vous polluez pas l'esprit avec du SQL !!!

    Il serait beaucoup plus simple de commencer par simplifier la vision de votre table des prix avec une vue donnant la date debut et la date fin de validité de vos pris.

    En gros, si vos prix changent à une date (sans heure) il vous suffit de créer une vue présentant les données ainsi :
    Produit, date-debut, date_fin, prix

    Après une simple théta jointure avec produit + date_facture BETWEEN date_debut AND date_fin vous sortira du mauvais pas ou vous vous êtes fourré !

    A lire : http://www.developpez.net/forums/d11...tervalle-date/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Sachez d'abord qu'une base de données contient des tables et non des fichiers... Si vous en êtes resté au fichiers, faites du Cobol et ne vous polluez pas l'esprit avec du SQL !!!
    C'est clairement du DB2 qui provient d'un serveur AS400, d'où l'utilisation du mot fichier.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Super clairs les noms des colonnes !

    Je n'aimerais pas avoir à travailler avec une BDD pareille !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Super clairs les noms des colonnes !

    Je n'aimerais pas avoir à travailler avec une BDD pareille !
    Entre le nom des colonnes bidons, le nom des tables bidons, la bibliothèque qui doit systématiquement précéder le nom de la table (au niveau des déclaration de tables), les CHAR utilisés plutôt que des VARCHAR, et les dates au format 20111220, que du bonheur ...

  6. #6
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par asmduty Voir le message
    C'est clairement du DB2 qui provient d'un serveur AS400, d'où l'utilisation du mot fichier.
    Pourquoi utiliser le mot "fichier" avec DB2 ?

  7. #7
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    C'est DB2 400 : à la base, sur AS400, tu manipules des fichiers physiques ou logiques que tu ouvres et que tu parcours manuellement (pareil pour les jointures : tu nested loop à la main )

    Tu le fais en Cobol, mais je suppose également en RPG (où tes cycles devaient être calqués sur ta boucle de lecture).

    Ce mode d'accès a été très plébiscité du moins dans les quelques endroits où j'ai pu voir de l'AS400.

    Le SGBD permet d'accéder également à ces fichiers avec sa vision SQL, son dictionnaire et tout et tout... mais les deux visions co-existent.

  8. #8
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Merci pour ces informations.

    Me coucherai moins bête ce soir

Discussions similaires

  1. [SQL] Besoin d'aide sur une requête
    Par Angath dans le forum Langage SQL
    Réponses: 2
    Dernier message: 17/01/2006, 16h26
  2. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  3. Besoin d'aide sur une requête (JOIN + COUNT ?)
    Par PanzerKunst dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2005, 10h29
  4. Aide sur une requête
    Par TshAw dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/02/2005, 11h42
  5. Aide sur une requête (Group By...??)
    Par Cocolapin dans le forum Langage SQL
    Réponses: 4
    Dernier message: 12/12/2004, 10h26

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