Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/12/2011, 19h11   #1
Invité de passage
 
Homme Eric
Développeur décisionnel
Inscription : juillet 2010
Messages : 3
Détails du profil
Informations personnelles :
Nom : Homme Eric
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : juillet 2010
Messages : 3
Points : 0
Points : 0
Par défaut Aide sur sous requête

Bonjour à tous,

J'ai un SQL basique :

Code :
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
Type de fichier : gif output.gif (6,2 Ko, 7 affichages)
zebulo80 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/12/2011, 23h25   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 10h30   #3
Membre émérite
 
Homme Tony
Développeur .NET
Inscription : novembre 2010
Messages : 570
Détails du profil
Informations personnelles :
Nom : Homme Tony
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : novembre 2010
Messages : 570
Points : 821
Points : 821
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.
__________________
Le Porc est un loup pour le Porc.
asmduty est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h47   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 333
Points : 18 333
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h51   #5
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 353
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 353
Points : 9 747
Points : 9 747
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 ?
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 16h06   #6
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
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.
__________________

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 20/12/2011, 16h08   #7
Expert Confirmé Sénior
 
Homme François
Chef de projet NTIC
Inscription : janvier 2007
Messages : 5 353
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Chef de projet NTIC

Informations forums :
Inscription : janvier 2007
Messages : 5 353
Points : 9 747
Points : 9 747
Merci pour ces informations.

Me coucherai moins bête ce soir
__________________

Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


Une réponse vous a aidé ? utiliser le bouton

"L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel
Bluedeep est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 17h01   #8
Membre émérite
 
Homme Tony
Développeur .NET
Inscription : novembre 2010
Messages : 570
Détails du profil
Informations personnelles :
Nom : Homme Tony
Localisation : France

Informations professionnelles :
Activité : Développeur .NET

Informations forums :
Inscription : novembre 2010
Messages : 570
Points : 821
Points : 821
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 ...
__________________
Le Porc est un loup pour le Porc.
asmduty est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h21.


 
 
 
 
Partenaires

Hébergement Web