Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes 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/08/2011, 08h02   #1
Invité de passage
 
Femme
Technicien réseau
Inscription : août 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Nouvelle-Calédonie

Informations professionnelles :
Activité : Technicien réseau
Secteur : Conseil

Informations forums :
Inscription : août 2011
Messages : 2
Points : 0
Points : 0
Par défaut Problème sur requete outer join

Bonjour,

J'ai un problème sur une requête avec la jointure left outer join, je m'explique :

Voici ma requête :
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT  r.RG_Date,r.rg_no,e.DO_Piece
FROM  dbo.F_CREGLEMENT R
LEFT OUTER JOIN  dbo.F_REGLECH e
       ON (e.RG_No=RG_No) AND (e.RG_No<>RG_No)
WHERE 
( r.RG_Compta=0 )
AND
  (r.CT_NumPayeur=c.CLI_NUMPAYEUR)
AND 
  r.RG_Date>'22/07/2011' 
  ;
J'ai fait cette requête là pour qu'il m'affiche tous les règlements avec le numero de facture y compris ceux qui ne sont pas liés à une facture(e.do_piece).

Il me renvoie donc bien tous les règlements mais dans ma colonne e.DO_piece, il y a inscrit 'NULL' sur toutes les lignes alors qu'il n'y a normalement que 3 numéros de règlement qui n'existe pas dans la table
dbo.F_REGLECH e.

C'est cela que je ne comprends pas, pourquoi me met-il 'NULL' ? On dirait qu'il ne fait pas le lien des RG_NO.

Que puis-je faire pour qu'il me les affiche ?

Merci d'avance pour votre aide,
Cordialement,
lindounette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 13h25   #2
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
faire le lien avec ceci

Code :
(e.RG_No=RG_No) AND (e.RG_No<>RG_No)
me parrait délicat, puisque cela equivaut a un FALSE

Faites simplement

Code :
1
2
3
 
LEFT OUTER JOIN  dbo.F_REGLECH e
       ON (e.RG_No=RG_No)
La jointure externe se chargera de vous rappatrier les lignes meme si elles ne sont pas liées
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 05h06   #3
Invité de passage
 
Femme
Technicien réseau
Inscription : août 2011
Messages : 2
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : Nouvelle-Calédonie

Informations professionnelles :
Activité : Technicien réseau
Secteur : Conseil

Informations forums :
Inscription : août 2011
Messages : 2
Points : 0
Points : 0
Par défaut Reponse à Yanika_Bzh

Bonjour,
Tout d'abord merci de ta réponse.
Si je mets juste ceci :
Code :
1
2
LEFT OUTER JOIN  dbo.F_REGLECH e
       ON (e.RG_No=RG_No)
Il me renvoie 33 000 lignes au lieu de 13 avec des n° de facture (e.do_piece) complètement incohérents, c'est à dire qu'il va me mettre plusieurs n° facture pour le même numéro de règlement.

J'ai essayé en rajoutant un distinct, cela me diminue le nombre de ligne mais c'est tout.

Je te mets aussi la 1ere requête que j'avais faite où il me manque juste les 3 N° de règlement inexistants dans la table "dbo.F_REGLECH e". Les n° factures sont par contre corrects :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT  r.RG_Date,r.rg_no,e.DO_Piece
FROM  dbo.F_CREGLEMENT R, dbo.F_REGLECH E
 
  WHERE ( r.RG_Compta=0 )
 
  AND
  (r.RG_no=e.RG_No)
 
  AND 
 r.RG_Date>'22/07/2011'
 
 
  ;
Merci encore pour ton aide,
lindounette est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 15h49   #4
Membre Expert
 
Avatar de Yanika_bzh
 
Homme Yannick
Ingénieur Etudes & Developpements
Inscription : février 2006
Messages : 1 125
Détails du profil
Informations personnelles :
Nom : Homme Yannick
Localisation : France, Deux Sèvres (Poitou Charente)

Informations professionnelles :
Activité : Ingénieur Etudes & Developpements
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : février 2006
Messages : 1 125
Points : 1 670
Points : 1 670
Pouvez vous poster la requete entiere qui vous ramene ces 33 000 lignes "incohérentes" ?
__________________
Dans la connaissance du monde, ceux qui ne savent rien en savent toujours autant que ceux qui n'en savent pas plus qu'eux. (Pierre Dac)
Yanika_bzh 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 16h25.


 
 
 
 
Partenaires

Hébergement Web