begin process at 2012 05 27 05:47:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

MySQL

 > 

Requêtes

 > 

Somme problématique : perte de ligne


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Somme problématique : perte de ligne

mardi 30 juin 2009 à 18:27:08 | Somme problématique : perte de ligne

ALLODREN

Bonjour,

Je cherche à concaténer le px_com des lignes qui ont un nucdli=nu_docu.
Affecter la somme dans le champ px_com dans la ligne qui a un nu_doc et effacer la ligne qui a le nucdli correspondant.

Pour expliciter ma requête, voici le jeu de données suivant :

Code :
+-|id_prod |ty_doc|nu_doc|nucdli|px_com|id_prod|ty_doc |nu_doc | nucdli  |px_com
+---------+--------+--------+--------+--------+---------+--------+--------+-----
| A      | BE   |13604 | NULL |    4 | E     | CDC   |  13661 |  13604 |      3 |                                    |
| A      | BE   |13604 | NULL |    4 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| A      | BE   |13604 | NULL |    4 | E     | CDT   |  13360 |  13604 |      1 |                                    |
| C      | CDA  |13604 | NULL |    3 | E     | CDT   |  13360 |  13604 |      1 |                                    |        |
| C      | CDA  |13604 | NULL |    3 | E     | CDC   |  13661 |  13604 |      3 |                                    |
| C      | CDA  |13604 | NULL |    3 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| D      | CDA  |13604 | NULL |    3 | E     | CDC   |  13661 |  13604 |      3 |                                    |
| D      | CDA  |13604 | NULL |    3 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| D      | CDA  |13604 | NULL |    3 | E     | CDT   |  13360 |  13604 |      1 |                                    |
| E      | FA   |  444 | NULL |    1 | NULL  | NULL  |   NULL |   NULL |   NULL |                                    |
| E      | BE   |  555 | NULL |    1 | NULL  | NULL  |   NULL |   NULL |   NULL |                                    |
| E      | CDA  |13604 | NULL |    2 | E     | CDC   |  13661 |  13604 |      3 |                                    |
| E      | CDA  |13604 | NULL |    2 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| E      | CDA  |13604 | NULL |    2 | E     | CDT   |  13360 |  13604 |      1 |                                    |
+---------+--------+--------+--------+--------+---------+--------+------

Voici le résultat attendu :

Code :
+-|id_prod |ty_doc|nu_doc|nucdli|px_com|id_prod|ty_doc |nu_doc | nucdli  |px_com
+---------+--------+--------+--------+--------+---------+--------+--------+-----
| A      | BE   |13604 | NULL |    4 |                                        
| A      | BE   |13604 | NULL |    4 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| A      | BE   |13604 | NULL |    4 |                                        
| C      | CDA  |13604 | NULL |    3 |                                               |
| C      | CDA  |13604 | NULL |    3 |                                        
| C      | CDA  |13604 | NULL |    3 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| D      | CDA  |13604 | NULL |    3 |                                        
| D      | CDA  |13604 | NULL |    3 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| D      | CDA  |13604 | NULL |    3 |           |                                    |
| E      | FA   |  444 | NULL |    1 | NULL  | NULL  |   NULL |   NULL |   NULL |                                    |
| E      | BE   |  555 | NULL |    1 | NULL  | NULL  |   NULL |   NULL |   NULL |                                    |
| E      | CDA  |13604 | NULL |   12 |                                          |
| E      | CDA  |13604 | NULL |    6 | B     | CDC   |  13361 |  13604 |      2 |                                    |
| E      | FA   |13604 | NULL |    6 |                                          |
+---------+--------+--------+--------+--------+---------+--------+------
Enfin voici ma requête :


Sauriez vous pourquoi je perds des lignes ?
C'est à cause du Group BY ?

SELECT  id_prod,
         ty_doc,
         nu_doc,
         nucdli,
         Sum(px_com)
FROM     (SELECT
            
            
            z.id_prod,
                 CASE z.cde_ter
                   WHEN 0 THEN z.ty_doc
                   ELSE 'CDA'
                 END AS ty_doc,

                 CASE z.cde_ter
                   WHEN 1 THEN NULL
                   ELSE z.nucdli
                 END AS nucdli,
            
                 z.px_com,
                
                 CASE z.cde_ter
                   WHEN 1 THEN z.nucdli
                   ELSE z.nu_doc
                 END AS nu_doc
          FROM  
            
            (SELECT *,
                         CASE
                           WHEN EXISTS (SELECT 1
                                        FROM   test.test a
                                        WHERE  a.id_prod = b.id_prod
                                               AND b.nucdli = a.nu_doc
                                               AND a.ty_doc = 'CDA') THEN 1
                           ELSE 0
                         END AS cde_ter
                  FROM   test.test b) AS z) AS e
GROUP BY
         id_prod,
         ty_doc,
         nu_doc,
         nucdli

La requête groupe sur les produits, et les produits similaires disparaissent.


Cette discussion est classée dans : doc, cdc, nu, cda, nucdli


Répondre à ce message

Sujets en rapport avec ce message

Calcul de tarif complexe sur 1 table [ par ALLODREN ] Bonjour, Le but est de calculer un tarif total J'ai une table ACHAT avec id_prod = produitty_doc =type de documentnu_doc=numéro de documentnucdl Problème de SUM et GROUP BY [ par ALLODREN ] Bonjour, Concernant le SUM et le GROUP BY : __On groupe toujours par au moins tous les éléments de la sélection___ Mais dans ce cas : cela ne me ca Inserer données depuis un doc XML ou CSV [ par olilesp ] Bonjour, Je dois développer un script PHP afin d'insérer, dans ma base de données (MySQL), des données comprises dans un fichier XML (ou CSV). J'ai b Requête SQLServeur par VB [ par vb_seb77 ] Bonjour, J'ai un petit soucis concernant une requête SQL sous VBJe recherche un certain nombre de caractère dont des caractères spécifiques (sql serve XQuery et SQL server [ par Migs ] Bonjour, je débute en XQuery et malheureusement la requête que je dois réalisée n'est pas des plus simples, si quelqu'un pouvait m'aider... :( Td probléme [ par jeanphilippe37 ] J'ai un gros soucis, ma prof d'informatique nous a donné ce TD à faire, mais le HIC, c'est que c'est noté!! Et j'ai rien compris. Le cours qu'elle nou


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,435 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales