Left outer join

ALLODREN Messages postés 8 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 30 juin 2009 - 29 mai 2009 à 14:50
ALLODREN Messages postés 8 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 30 juin 2009 - 3 juin 2009 à 13:41
Sauriez vous pourquoi cette requête ne me calcule pas la somme correctement ?


SELECT
k.id_produit,
k.id_fournisseur,
k.dt_document,
k.qt_cmde_ini,
k.ty_commande,
k.id_societe,
k.id_offre,
k.ty_document,
k.nu_document,
k.id_user,
k.dt_livraison,
k.dt_confirmation,
k.px_commande + coalesce(k3.px_commande,0) AS px_commande

from
tbl_ligneachat k

LEFT OUTER JOIN (

SELECT
k2.id_produit,
k2.id_fournisseur,
k2.dt_document,
k2.qt_cmde_ini,
k2.ty_commande,
k2.id_societe,
k2.id_offre,
k2.ty_document,
k2.nu_document,
k2.id_user,
k2.dt_livraison,
k2.dt_confirmation,
k2.px_commande,
k2.nucdli

FROM tbl_ligneachat K2) as K3



ON K3.nucdli is not null and k3.nucdli=k.nu_document

where K.nucdli is null


order by id_produit

5 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
3 juin 2009 à 09:52
message d'erreur ?
0
ALLODREN Messages postés 8 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 30 juin 2009
3 juin 2009 à 10:14
Il n' y a pas de message d'erreur.

Mais la requête ne m'effectue pas la somme du "px_commande" des lignes où nucdli=nu_document.

Où est mon problème ?

Je récapitule :
Ma requête additionne deux tables (A,B) grace au Left outer join avec les conditions :
Si nucdli = nu_document
alors A.px_commande = A.px_commande + B.px_commande
Et je n'affiche pas les A.nucdli.

Si c'est pas clair, je peux donner plus d'informations.

Merci
0
aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
3 juin 2009 à 13:29
deja, je ne vois pas pourquoi vous faite un select dans votyre jointure.
pourquoi ne pas faire une jointure directement :

LEFT OUTER JOIN tbl_ligneachat  as K3

d'autre part, peut-on avoir un exemple de ce que contient la table, du resultat obtnu, et surtout du resultat attendu
0
ALLODREN Messages postés 8 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 30 juin 2009
3 juin 2009 à 13:38
Mon besoin est :

[LIST]Addition des valeurs "px_commande" pour toutes les lignes de ma table qui ont : nucdli = nu_document.
/LIST
[LIST]
[*]On affiche la somme dans le px_commande de la ligne où se trouve le "nu_document" identique.
/LIST
[LIST]
[*]Et on ne retient plus la ligne où se trouve le "nucdli" lié.
/LIST

Ex :

Ma table actuelle est

id_prod | ty_document | nu_document | nucdli | px_commande

A | CDA | 160 | |2
A| CDD | 161 | 160 | 2
A | CDA | 162 | | 2

Je souhaite l' extraire tel que :

A|CDA|160| |4
A|CDA|162||2

Mon premier résultat est l'addition entre la première et seconde ligne qui ont nucdli = nu_document.


---> RÉCAPITULONS:

Dans un premier temps, cette requête regroupe les "nucdli"
(n° commandes liées) et les "nu_document" ( n ° commande ) qui ont les mêmes identifiants ( 2 colonnes dans une même table qui ont les mêmes identifiants).

Dans un second temps, elle est censée additionner les "px_commande" ( le coût des commandes) des regroupements ( au total, il y a 8 regroupement sur 40 664 lignes ).

Étant donnée que ma requête fusionne les "nucdli" et les "nu_document" qui ont les mêmes identifiants, et qu'il y en a 8, la requête devrait me retourner 40 656 lignes.
Or ma requête fait bien la somme et effectue bien la fusion mais ne me renvoi que 40 546 lignes soit une centaine en moins !


Est ce plus clair ! ?/QUOTE

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ALLODREN Messages postés 8 Date d'inscription vendredi 17 avril 2009 Statut Membre Dernière intervention 30 juin 2009
3 juin 2009 à 13:41
MERCI DE NE PAS PRENDRE EN COMPTE LE MESSAGE CI DESSUS ...

MON BESOIN EST :

[*]Addition des valeurs "px_commande" pour toutes les lignes de ma table qui ont : nucdli = nu_document.


[*]On affiche la somme dans le px_commande de la ligne où se trouve le "nu_document" identique.


[*]Et on ne retient plus la ligne où se trouve le "nucdli" lié.


Ex :

Ma table actuelle est

id_prod | ty_document | nu_document | nucdli | px_commande

A | CDA | 160 | |2
A| CDD | 161 | 160 | 2
A | CDA | 162 | | 2

Je souhaite l' extraire tel que :

A|CDA|160| |4
A|CDA|162||2

Mon premier résultat est l'addition entre la première et seconde ligne qui ont nucdli = nu_document.


---> RÉCAPITULONS:

Dans un premier temps, cette requête regroupe les "nucdli"
(n° commandes liées) et les "nu_document" ( n ° commande ) qui ont les mêmes identifiants ( 2 colonnes dans une même table qui ont les mêmes identifiants).

Dans un second temps, elle est censée additionner les "px_commande" ( le coût des commandes) des regroupements ( au total, il y a 8 regroupement sur 40 664 lignes ).

Est ce plus clair ! ?
0
Rejoignez-nous