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

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut Soustraction entre 2 requetes / Erreur SQL (1241):Operand should contain 1 column(s)

    Bonjour,

    J'essai de faire une simple soustraction entre 2 requetes.

    Ma premiere requete est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT        Nave, Producto, CONCAT(Longitud, 'x', Anchura) AS TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Piezas, SUM(Piezas) AS TOTALPIEZAS, COUNT(*) 
                             AS TOTALPALES
    FROM            Produccion
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
    HAVING (Lote_cliente='' OR Lote_cliente IS NULL)
    Ma deuxieme est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT Produccion.Nave, 
    Produccion.Producto, CONCAT(Longitud, 'x', Anchura) AS TAMANO, Produccion.Espesor, Produccion.Seleccion, Produccion.Marcado, Produccion.Formato, Produccion.Particularidad, Produccion.Codigo_referencia,  Produccion.Piezas,  SUM(Piezas) AS TOTALPIEZAS, COUNT(*) AS TOTALPALES
    FROM            Lote_Cliente, Produccion
    WHERE        Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente AND (Lote_Cliente.fecha_preparacion = '2018-04-17')
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
    Les deux requetes marchente correctement separement, mais je bute pour faire la soustraction en essayant cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT
    (SELECT        Nave, Producto, CONCAT(Longitud, 'x', Anchura) AS TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Piezas, SUM(Piezas) AS TOTALPIEZAS, COUNT(*) 
                             AS TOTALPALES
    FROM            Produccion
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
    HAVING (Lote_cliente='' OR Lote_cliente IS NULL))
     
    -
     
    (SELECT Produccion.Nave, 
    Produccion.Producto, CONCAT(Longitud, 'x', Anchura) AS TAMANO, Produccion.Espesor, Produccion.Seleccion, Produccion.Marcado, Produccion.Formato, Produccion.Particularidad, Produccion.Codigo_referencia,  Produccion.Piezas,  SUM(Piezas) AS TOTALPIEZAS, COUNT(*) AS TOTALPALES
    FROM            Lote_Cliente, Produccion
    WHERE        Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente AND (Lote_Cliente.fecha_preparacion = '2018-04-17')
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente)
    J'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur SQL (1241):Operand should contain 1 column(s)
    Merci de votre aide..

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Citation Envoyé par superthx
    J'essai de faire une simple soustraction entre 2 requetes.
    Les soustractions se font sur des colonnes numériques.
    Vous vouliez certainement parler de faire la différence, ce qui n'est pas exactement la même chose.

    Voici ce que représente une différence selon le diagramme de Venn :



    Vous recherchez les identifiants qui sont présents dans la première requête (A) mais ceux absents dans la seconde requête (B).
    Cela se fait avec la clause "where not exists ( ... )".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    --------------
    select tb1.clef, tb1.nom, tb1.prenom
    from `ecrivains` as tb1
    where not exists (select 1 from `livres` as tb2 where tb2.clef = tb1.clef)
    --------------
     
    +------+---------+--------+
    | clef | nom     | prenom |
    +------+---------+--------+
    | Rim  | Rimbaud | Arthur |
    | San  | Sand    | George |
    | Zol  | Zola    | Emile  |
    +------+---------+--------+
    J'affiche tous les écrivains qui n'ont pas écrits de livres.

    En fonction de vos deux requêtes, cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  *
      from  Produccion as t1
     where  not exists ( select 1 from Lote_Cliente as t2 where t2.numero_lote_cliente = t1.Lote_cliente);
    Attention, vous n'obtiendrez pas le même résultat si vous inversez vos deux tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select  *
      from  Lote_Cliente as t2
     where  not exists ( select 1 from Produccion as t1 where t1.Lote_cliente = t2.numero_lote_cliente);
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Merci @Artemus24,

    J'ai surement mal posé mon problème et j'en suis désolé..........
    Ce que j'essai de faire est de savoir ce qui est en stock sur une date précise. Je vais essayer de poser le probleme plus simplement.

    J'ai un numéro unique dans la colonne "Lote_cliente" dans la table "Produccion", celle ci contient aussi une colonne "Fecha" pour savoir l'entrée en Stock.
    Quand je veux savoir le stock actuel je fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from Produccion where Lote_cliente is null
    Quand je veux éliminer un produit du stock pour une commande je met par exemple un numero de commande dans "Lote_cliente", dans mon exemple je met "12346".

    J'ai une autre Table qui se nomme "Lote_Cliente", elle a la colonne "fecha_preparacion" qui est la date de la commande et "numero_lote_cliente" qui est le même que dans la table "Produccion" dans la colonne "Lote_cliente", dans notre exemple "123456".

    Quand je veux faire la recherche de la commande je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT        Lote_Cliente.cliente, Lote_Cliente.numero_lote_cliente, Lote_Cliente.numero_pedido_cliente, Lote_Cliente.fecha_preparacion, Lote_Cliente.fecha_envio, Lote_Cliente.pais_destino, Lote_Cliente.nota, 
                             Produccion.Nave, Produccion.Producto, Produccion.Producto_tipo, Produccion.Longitud, Produccion.Anchura, Produccion.Fecha, Produccion.Codigo_referencia, Produccion.Particularidad, Produccion.Lote_cliente, 
                             Produccion.Lote_medicion, Produccion.Formato, Produccion.Marcado, Produccion.Embaladora, Produccion.Numero_pale, Produccion.Kilos, Produccion.Piezas, Produccion.Seleccion, Produccion.Espesor
    FROM            Lote_Cliente, Produccion
    WHERE        Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente AND (Lote_Cliente.numero_lote_cliente = '123456')
    Le truc que j'essai c'est donc d'avoir mon stock a une date disons le 2018-04-19.

    Je sais pas si c'est claire.

    J'ai essayer avec ton explication avec ce code :

    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
    select
    t1.Nave, 
    t1.Producto,
    CONCAT(t1.Longitud, 'x',t1.Anchura) AS TAMANO, 
    t1.Espesor, 
    t1.Seleccion, 
    t1.Marcado, 
    t1.Formato, 
    t1.Particularidad, 
    t1.Codigo_referencia,
    t1.Fecha,
    t1.Lote_cliente,
    SUM(t1.Piezas) AS TOTALPIEZAS, 
    COUNT(*) AS TOTALPALES
     
     
    from  Produccion as t1
    where  not exists ( select 1 from Lote_Cliente as t2 where t2.numero_lote_cliente = t1.Lote_cliente)
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    Ça marche, mais j'aurai bien voulu avoir Lote_Cliente.numero_lote_cliente et Lote_Cliente.fecha_preparacion comme dans ce code.

    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
    select
    t1.Nave, 
    t1.Producto,
    CONCAT(t1.Longitud, 'x',t1.Anchura) AS TAMANO, 
    t1.Espesor, 
    t1.Seleccion, 
    t1.Marcado, 
    t1.Formato, 
    t1.Particularidad, 
    t1.Codigo_referencia,
    t1.Fecha,
    t1.Lote_cliente,
    t2.numero_lote_cliente,
    t2.fecha_preparacion,
    SUM(t1.Piezas) AS TOTALPIEZAS, 
    COUNT(*) AS TOTALPALES
     
    
    from  Produccion as t1
    where  not exists ( select 1 from Lote_Cliente as t2 where t2.numero_lote_cliente = t1.Lote_cliente)
    GROUP BY Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    Mais j'ai une erreur............. Pourquoi "select 1" ?

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Citation Envoyé par superthx
    Ce que j'essai de faire est de savoir ce qui est en stock sur une date précise.
    Dans la table "Lote_cliente", pour sélectionner votre date, vous devez utilisez la colonne "fecha_preparacion".

    Vous demandez à faire la différence entre la table "Produccion" et la table "Lote_Cliente".
    C'est-à-dire récupérer les lignes dont la clef est présente dans la table "Produccion" mais absente dans la table "Lote_Cliente".
    Or ce que vous demanez à faire n'est pas possible puisque vous rejetez tous les lignes présentes dans la table "Lote_cliente".

    Je vous ai dit :
    Citation Envoyé par Artemus24
    Attention, vous n'obtiendrez pas le même résultat si vous inversez vos deux tables :
    Etes-vous certain de vouloir faire la différence entre la table "Produccion" et la table "Lote_Cliente" ?
    Ne serait-il pas plus judicieux de faire la différence entre la table "Lote_Cliente" et la table "Produccion" ?

    Ce qui donne alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select  *
      from  Lote_Cliente as t1
     where  not exists ( select 1 from Produccion as t2 where t2.Lote_cliente = t1.numero_lote_cliente)
       and  t1.numero_lote_cliente = '123456'
       and  t1.fecha_preparacion   = '2018-04-17';
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Citation Envoyé par Artemus24 Voir le message
    C'est-à-dire récupérer les lignes dont la clef est présente dans la table "Produccion" mais absente dans la table "Lote_Cliente".
    Or ce que vous demanez à faire n'est pas possible puisque vous rejetez tous les lignes présentes dans la table "Lote_cliente".

    Je vous ai dit :

    Etes-vous certain de vouloir faire la différence entre la table "Produccion" et la table "Lote_Cliente" ?
    Ne serait-il pas plus judicieux de faire la différence entre la table "Lote_Cliente" et la table "Produccion" ?
    La clef est présente dans la table "Produccion" '123456'; mais aussi dans la table "Lote_Cliente" '123456' que pour savoir chez qui on envoi le produit que les coordonnées du client et date de l'envoi.

    Citation Envoyé par Artemus24 Voir le message
    Or ce que vous demanez à faire n'est pas possible puisque vous rejetez tous les lignes présentes dans la table "Lote_cliente".
    "Lote_Cliente" et non "Lote_cliente"

    Citation Envoyé par Artemus24 Voir le message
    select *
    from Lote_Cliente as t1
    where not exists ( select 1 from Produccion as t2 where t2.Lote_cliente = t1.numero_lote_cliente)
    and t1.numero_lote_cliente = '123456'
    and t1.fecha_preparacion = '2018-04-17';
    Lá le probleme c'est que si je met pas "123456" ben il trouve rien car cette commande n'existe pas.


    C'est que pour recuperer la commande client je faisai cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT        Lote_Cliente.cliente, Lote_Cliente.numero_lote_cliente, Lote_Cliente.numero_pedido_cliente, Lote_Cliente.fecha_preparacion, Lote_Cliente.fecha_envio, Lote_Cliente.pais_destino, Lote_Cliente.nota, 
                             Produccion.Nave, Produccion.Producto, Produccion.Producto_tipo, Produccion.Longitud, Produccion.Anchura, Produccion.Fecha, Produccion.Codigo_referencia, Produccion.Particularidad, Produccion.Lote_cliente, 
                             Produccion.Lote_medicion, Produccion.Formato, Produccion.Marcado, Produccion.Embaladora, Produccion.Numero_pale, Produccion.Kilos, Produccion.Piezas, Produccion.Seleccion, Produccion.Espesor
    FROM            Lote_Cliente, Produccion
    WHERE        Lote_Cliente.numero_lote_cliente = Produccion.Lote_cliente AND (Lote_Cliente.numero_lote_cliente = @LOTECLIENTE)
    Qui recupere tous de Lote_Cliente + Produccion ......................

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Citation Envoyé par superthx
    J'essai de faire une simple soustraction entre 2 requetes.
    Je pense que vous utilisez à tort le mot "soustraction" alors que j'ai plutôt compris "différence".
    Et du coup, je ne comprends pas ce que vous cherchez à faire.

    Pouvez-vous nous communiquer un jeu d'essai représentatif de vos tables "Produccion" et "Lote_Cliente" ?
    Et nous donner en fonction de ce jeu d'essai le résultat que vous attendez.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Oui avec plaisir demain.........
    Merci encore......

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    En piece jointe Lote_Cliente.xlsx et Produccion.xlsx

    Trouver ce qu'il y en stock a une date précise.
    Dans Produccion si null dans la colonne Lote_cliente c'est en stock.
    MErci de me consulter si il y a un probleme...

    Merci encore...

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Pourquoi m'avez-vous communiqué des fichiers Excel ?
    J'aurai préféré obtenir l'export de votre base de données. Pourquoi ?
    Parce que je n'ai pas le descriptif de vos colonnes et du coup, j'ai dû improviser.

    Je vous avais aussi demandé le résultat ???

    A priori, la référence de votre stocke se trouve dans la colonne "codigo_referencia".
    Quand la colonne "lote_cliente" dans la table "produccion" est à vide, c'est le total qui est en stocke.
    Quand la colonne "lote_cliente" dans la table "produccion" est renseignée, c'est un déstockage.

    Pour ce faire, il suffit de recalculer les positions en stocke sur les deux critères ci-dessus et de faire une jointure.

    J'ai reconstitué vos deux requêtes afin d'obtenir les mêmes résultats, ce qui donne :
    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
    --------------
    select  *  from  prod
    --------------
     
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       74784 |         26 |
    | Atelier | PZ       | 50x25   | 5       | MX        | CE      | Rectangular | 19             | HH5M              |       11802 |         14 |
    | Atelier | PZ       | 32x22   | 5       | C         | CE      | Rectangular |                | HH5C              |       51732 |         34 |
    | Atelier | PZ       | 35x25   | 5       | C         | CE      | Rectangular |                | HH5C              |       15694 |         11 |
    | Atelier | PZ       | 40x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       38834 |         25 |
    | Atelier | PZ       | 50x37,5 | 5       | MX        | CE      | Rectangular |                | HH5M              |        3666 |          7 |
    | Atelier | PZ       | 32x22   | 7       | P         | CE      | Rectangular |                | HH7P              |        8032 |          7 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       53872 |         29 |
    | Atelier | PZ       | 40x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        1518 |          1 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       34000 |         17 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular | 19             | HH5C              |        5726 |          8 |
    | Atelier | PZ       | 35x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        4508 |          3 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |       10320 |          5 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3858 |          5 |
    | Atelier | PZ       | 40x25   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |        9716 |          9 |
    | Atelier | PZ       | 40x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3652 |          4 |
    | Atelier | PZ       | 32x22   | 4       | S         | CE      | Rectangular |                | HH4S              |        1900 |          1 |
    | Atelier | PZ       | 32x22   | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 |
    | Atelier | PZ       | 45x25   | 7       | MX        | CE      | Rectangular | 35             | HH7M              |         698 |          1 |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    Vous avez trop détaillé votre stocke, ce qui est inutile pour la bonne compréhension de votre problème.
    Il suffit de faire un regroupement comme ci-après :
    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
    --------------
    select   Codigo_referencia,
             lote_cliente,
             SUM(Piezas)    AS TOTALPIEZAS
     
       from  produccion
     
      WHERE  Lote_cliente = ''
         OR  Lote_cliente IS NULL
     
    group by Codigo_referencia, lote_cliente
    order by Codigo_referencia, lote_cliente
    --------------
     
    +-------------------+--------------+-------------+
    | Codigo_referencia | lote_cliente | TOTALPIEZAS |
    +-------------------+--------------+-------------+
    | HH4C              |              |       92706 |
    | HH4M              |              |       20036 |
    | HH4P              |              |      108784 |
    | HH4S              |              |       13300 |
    | HH5C              |              |       86688 |
    | HH5M              |              |       15468 |
    | HH7M              |              |         698 |
    | HH7P              |              |        8032 |
    +-------------------+--------------+-------------+
    On retrouve bien les mêmes chiffres. Par exemple, le codigo_referencia est "HH4C".
    Dans la première extraction ci-dessus, nous avons 38834 + 53872 = 92706, qui est bien le montant que nous trouvons dans notre deuxième extraction.

    Pour la deuxième requête, j'ai procédé aussi de la même façon, ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    --------------
    select  *  from cliente
    --------------
     
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 30x20  | 4       | C         | CE      | Rectangular |                | HH4C              |       19506 |         10 |
    | Atelier | PZ       | 35x22  | 5       | C         | CE      | Rectangular |                | HH5C              |       15148 |         10 |
    | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       24000 |         12 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       18660 |         10 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       14956 |          8 |
    | Atelier | PZ       | 32x22  | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    Et voici mon regroupement, ce qui donne :
    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
    --------------
    select      p.Codigo_referencia,
                SUM(p.Piezas)    AS TOTALPIEZAS
     
          from  produccion   as p
     
    inner join  lote_cliente as l
            on  l.numero_lote_cliente = p.Lote_Cliente
           and  l.fecha_preparacion   = '2018-04-17'
     
         WHERE  p.Codigo_referencia <> ''
      group by  Codigo_referencia
      order by  Codigo_referencia
    --------------
     
    +-------------------+-------------+
    | Codigo_referencia | TOTALPIEZAS |
    +-------------------+-------------+
    | HH4C              |       53122 |
    | HH4P              |       24000 |
    | HH4S              |       11400 |
    | HH5C              |       15148 |
    +-------------------+-------------+
    Je reprends le même "Codigo_referencia" qui à la valeur "HH4C". Je trouve 19506 + 18660 + 14956 = 53122.
    Ce résultat est bien conforme à ce que je trouve dans mon regroupement.

    Il suffit alors de regrouper ces deux sous-requêtes dans une requête principale, de faire la jointure, et enfin de calculer le nouveau stock.
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    --------------
    select  p1.Codigo_referencia,
                     p1.totalpiezas,
                     coalesce(p2.totalpiezas,0) as totalpiezas,
                     p1.totalpiezas - coalesce(p2.totalpiezas,0) as total
     
               from  (  select  Codigo_referencia,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion
                         WHERE  Lote_cliente = ''
                      group by  Codigo_referencia
                      order by  Codigo_referencia
                     ) as p1
     
    left outer join  (  select  Codigo_referencia,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion   as p
                    inner join  lote_cliente as l
                            on  l.numero_lote_cliente = p.Lote_Cliente
                           and  l.fecha_preparacion   = '2018-04-17'
                         WHERE  Lote_cliente <> ''
                      group by  Codigo_referencia
                      order by  Codigo_referencia
                     ) as p2
                 on  p2.Codigo_referencia = p1.Codigo_referencia
     
           order by  p1.Codigo_referencia
    --------------
     
    +-------------------+-------------+-------------+-------+
    | Codigo_referencia | totalpiezas | totalpiezas | total |
    +-------------------+-------------+-------------+-------+
    | HH4C              |       92706 |       53122 | 39584 |
    | HH4M              |       20036 |           0 | 20036 |
    | HH4P              |      108784 |       24000 | 84784 |
    | HH4S              |       13300 |       11400 |  1900 |
    | HH5C              |       86688 |       15148 | 71540 |
    | HH5M              |       15468 |           0 | 15468 |
    | HH7M              |         698 |           0 |   698 |
    | HH7P              |        8032 |           0 |  8032 |
    +-------------------+-------------+-------------+-------+
     
    Appuyez sur une touche pour continuer...
    En espérant que cela corresponde à votre attente.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Désolé ci je pouvais pas donner le tout en format sql, c'est pour éviter des problèmes.
    Je vais vérifier cela et voir ce qu'il en est....
    En tous cas un gros merci pour ton énorme aide. Un immense merci.
    Je regarde ça et je reviens ici, a tout de suite....

  11. #11
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Je ne vous ai pas demandé la totalité de votre base de données, mais juste un jeu d'essai représentatif de votre problème.
    Avec, bien sûr, le résultat que vous attendez !

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Citation Envoyé par Artemus24 Voir le message
    Salut superthx.
    [code]--------------
    select p1.Codigo_referencia,
    p1.totalpiezas,
    coalesce(p2.totalpiezas,0) as totalpiezas,
    p1.totalpiezas - coalesce(p2.totalpiezas,0) as total

    from ( select Codigo_referencia,
    SUM(Piezas) AS TOTALPIEZAS
    from produccion
    WHERE Lote_cliente = ''
    group by Codigo_referencia
    order by Codigo_referencia
    ) as p1

    left outer join ( select Codigo_referencia,
    SUM(Piezas) AS TOTALPIEZAS
    from produccion as p
    inner join lote_cliente as l
    on l.numero_lote_cliente = p.Lote_Cliente
    and l.fecha_preparacion = '2018-04-17'
    WHERE Lote_cliente <> ''
    group by Codigo_referencia
    order by Codigo_referencia
    ) as p2
    on p2.Codigo_referencia = p1.Codigo_referencia

    order by p1.Codigo_referencia
    --------------

    +-------------------+-------------+-------------+-------+
    | Codigo_referencia | totalpiezas | totalpiezas | total |
    +-------------------+-------------+-------------+-------+
    | HH4C | 92706 | 53122 | 39584 |
    | HH4M | 20036 | 0 | 20036 |
    | HH4P | 108784 | 24000 | 84784 |
    | HH4S | 13300 | 11400 | 1900 |
    | HH5C | 86688 | 15148 | 71540 |
    | HH5M | 15468 | 0 | 15468 |
    | HH7M | 698 | 0 | 698 |
    | HH7P | 8032 | 0 | 8032 |
    +-------------------+-------------+-------------+-------+
    Bizarre ce dernier ne marche pas.... j'ai pas d'erreur. Il me retourne rien.
    Est-ce du a Mysql (J'utilise MariaDB) ?

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    J'ai trouver,

    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
    select  p1.Codigo_referencia,
                     p1.totalpiezas,
                     coalesce(p2.totalpiezas,0) as totalpiezas,
                     p1.totalpiezas - coalesce(p2.totalpiezas,0) as total
     
               from  (  select  Codigo_referencia,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion
                         WHERE  Lote_cliente is null
                      group by  Codigo_referencia
                      order by  Codigo_referencia
                     ) as p1
     
    left outer join  (  select  Codigo_referencia,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion   as p
                    inner join  lote_cliente as l
                            on  l.numero_lote_cliente = p.Lote_Cliente
                           and  l.fecha_preparacion   = '2018-04-17'
                         WHERE  Lote_cliente <> ''
                      group by  Codigo_referencia
                      order by  Codigo_referencia
                     ) as p2
                 on  p2.Codigo_referencia = p1.Codigo_referencia
     
           order by  p1.Codigo_referencia
    Je continue de chercher
    Edit:
    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
    select  p1.Codigo_referencia,p1.Producto,
                     p1.totalpiezas,
                     coalesce(p2.totalpiezas,0) as totalpiezas,
                     p1.totalpiezas - coalesce(p2.totalpiezas,0) as total
     
               from  (  select  Codigo_referencia,Producto,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion
                         WHERE  Lote_cliente is null
                      group by  Codigo_referencia,Producto
                      order by  Codigo_referencia
                     ) as p1
     
    left outer join  (  select  Codigo_referencia,Producto,
                                SUM(Piezas) AS TOTALPIEZAS
                          from  produccion   as p
                    inner join  lote_cliente as l
                            on  l.numero_lote_cliente = p.Lote_Cliente
                           and  l.fecha_preparacion   = '2018-04-17'
                         WHERE  Lote_cliente <> ''
                      group by  Codigo_referencia,Producto
                      order by  Codigo_referencia
                     ) as p2
                 on  (p2.Codigo_referencia = p1.Codigo_referencia and p2.Producto = p1.Producto)
     
           order by  p1.Codigo_referencia

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Encore une question sur le code fourni par tes soins,

    Comment puis-je regrouper TAMANO (CONCAT(t1.Longitud, 'x',t1.Anchura) AS TAMANO),Seleccion,Producto,Producto_tipo,Marcado,Formato,Espesor,Particularidad ?

    Car dans ton code on regroupe que par Codigo_referencia et je n'arrive pas a rajouter et grouper comme ci dessus. Je vais continuer a voire si je trouve d'ici la....

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Je test le code suivant,
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    select
    p1.Codigo_referencia,
    p1.Producto,
    p1.Nave,
    p1.Espesor,
    p1.Seleccion,
    p1.Marcado,
    p1.Formato,
    p1.Particularidad,
    p1.TAMANO,
    coalesce(p2.totalpiezas,0) as totalpiezas,
    coalesce(p2.totalpales,0) as totalpales,
    p1.totalpiezas - coalesce(p2.totalpiezas,0) as total,
    p1.totalpales - coalesce(p2.totalpales,0) as totalpal
    from
    (select
    Codigo_referencia,
    Producto,
    Nave,
    Espesor,
    Seleccion,
    Marcado,
    Formato,
    Particularidad,
    CONCAT(Longitud, 'x',Anchura) AS TAMANO,
    SUM(Piezas) AS TOTALPIEZAS,
    COUNT(*) AS TOTALPALES
    from  Produccion
    WHERE  (Lote_cliente is null or Lote_cliente ='') and Nave = 'Atelier' 
    group by Nave, Producto, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, TAMANO
    order by  Codigo_referencia) as p1
     
    left outer join
     
    (select 
    Codigo_referencia,
    Producto,
    Nave,
    Espesor,
    Seleccion,
    Marcado,
    Formato,
    Particularidad,
    CONCAT(Longitud, 'x',Anchura) AS TAMANO,
    SUM(Piezas) AS TOTALPIEZAS,
    COUNT(*) AS TOTALPALES
    from  Produccion   as p
     
    inner join  Lote_Cliente as l
     
    on  l.numero_lote_cliente = p.Lote_Cliente
    and  l.fecha_preparacion   = '2018-04-17'
    WHERE  (Lote_cliente <> '') and Nave = 'Atelier'
    group by  Nave, Producto,Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    order by  Codigo_referencia) as p2
    on  (p2.Codigo_referencia = p1.Codigo_referencia and p2.Producto = p1.Producto and p2.Nave = p1.Nave and p2.Espesor = p1.Espesor and p2.Seleccion = p1.Seleccion
    and p2.Marcado = p1.Marcado  and p2.Formato = p1.Formato and p2.Particularidad = p1.Particularidad and p2.TAMANO = p1.TAMANO)
     
    group by  Nave, Producto, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, TAMANO
    Sous HeidiSQL j'ai pas d'erreur mais sous vb pour tester la requete j'ai "Erreur dans la clause GROUP BY.
    Impossible d'analyser le texte de la requête."

  16. #16
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    Citation Envoyé par superthx
    Bizarre ce dernier ne marche pas.... j'ai pas d'erreur. Il me retourne rien.
    Est-ce du a Mysql (J'utilise MariaDB) ?
    Vous seul connaissez votre environnement.

    Citation Envoyé par superthx
    J'ai trouver,
    Il serait intéressant que vous nous faissiez part de votre découverte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  Lote_cliente is null
    Je suis parti de votre fichier Excel et comme vous n'avez pas mis dans la cellule "\N", je ne peux pas gérer cela en tant que colonne à NULL.
    Donc, je suis obligé de tester à vide !

    Citation Envoyé par superthx
    Car dans ton code on regroupe que par Codigo_referencia et je n'arrive pas a rajouter et grouper comme ci dessus.
    J'ai cherché à distinguer chaque ligne et tout ce que j'ai pu trouver, se résume à la colonne "Codigo_referencia", le code référence.

    Citation Envoyé par superthx
    Comment puis-je regrouper TAMANO (CONCAT(t1.Longitud, 'x',t1.Anchura) AS TAMANO),Seleccion,Producto,Producto_tipo,Marcado,Formato,Espesor,Particularidad ?
    Tout simplement en faisant ceci :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    --------------
    select           p1.*,
                     p2.*,
                     p1.totalPiezas - coalesce(p2.totalPiezas,0) as Total
               from  (  SELECT  Nave,
                                Producto,
                                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                                Espesor,
                                Seleccion,
                                Marcado,
                                Formato,
                                Particularidad,
                                Codigo_referencia,
                                SUM(Piezas)                    AS TOTALPIEZAS,
                                COUNT(*)                       AS TOTALPALES
     
                          FROM  Produccion
     
                         WHERE  Lote_cliente = ''
                            OR  Lote_cliente IS NULL
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     )  as p1
     
    left outer join  (  SELECT  p.Nave,
                                p.Producto,
                                CONCAT(p.Longitud, 'x', p.Anchura) AS TAMANO,
                                p.Espesor,
                                p.Seleccion,
                                p.Marcado,
                                p.Formato,
                                p.Particularidad,
                                p.Codigo_referencia,
                                SUM(p.Piezas)                      AS TOTALPIEZAS,
                                COUNT(*)                           AS TOTALPALES
     
                          FROM  Lote_Cliente as l
     
                    INNER JOIN  Produccion   as p
                            ON  p.Lote_Cliente = l.numero_lote_cliente
     
                         WHERE  l.fecha_preparacion = '2018-04-17'
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     ) as p2
                 on  p2.nave              = p1.nave
                and  p2.producto          = p1.producto
                and  p2.tamano            = p1.tamano
                and  p2.espesor           = p1.espesor
                and  p2. seleccion        = p1.seleccion
                and  p2.marcado           = p1.marcado
                and  p2.formato           = p1.formato
                and  p2.particularidad    = p1.particularidad
                and  p2.codigo_referencia = p1.codigo_referencia
     
           order by  p1.Nave, p1.Producto, p1.TAMANO, p1.Espesor, p1.Seleccion, p1.Marcado, p1.Formato, p1.Particularidad, p1.Codigo_referencia
    --------------
     
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+--------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | Total  |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+--------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       74784 |         26 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  74784 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |       10320 |          5 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  10320 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       53872 |         29 | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       33616 |         18 |  20256 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       34000 |         17 | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       24000 |         12 |  10000 |
    | Atelier | PZ       | 32x22   | 4       | S         | CE      | Rectangular |                | HH4S              |        1900 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   1900 |
    | Atelier | PZ       | 32x22   | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 | Atelier | PZ       | 32x22  | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 |      0 |
    | Atelier | PZ       | 32x22   | 5       | C         | CE      | Rectangular |                | HH5C              |       51732 |         34 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  51732 |
    | Atelier | PZ       | 32x22   | 7       | P         | CE      | Rectangular |                | HH7P              |        8032 |          7 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   8032 |
    | Atelier | PZ       | 35x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        4508 |          3 | Atelier | PZ       | 35x22  | 5       | C         | CE      | Rectangular |                | HH5C              |       15148 |         10 | -10640 |
    | Atelier | PZ       | 35x25   | 5       | C         | CE      | Rectangular |                | HH5C              |       15694 |         11 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  15694 |
    | Atelier | PZ       | 40x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       38834 |         25 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  38834 |
    | Atelier | PZ       | 40x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        1518 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   1518 |
    | Atelier | PZ       | 40x25   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |        9716 |          9 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   9716 |
    | Atelier | PZ       | 40x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3652 |          4 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   3652 |
    | Atelier | PZ       | 45x25   | 7       | MX        | CE      | Rectangular | 35             | HH7M              |         698 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |    698 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3858 |          5 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   3858 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular | 19             | HH5C              |        5726 |          8 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   5726 |
    | Atelier | PZ       | 50x25   | 5       | MX        | CE      | Rectangular | 19             | HH5M              |       11802 |         14 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  11802 |
    | Atelier | PZ       | 50x37,5 | 5       | MX        | CE      | Rectangular |                | HH5M              |        3666 |          7 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |   3666 |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+--------+
     
    Appuyez sur une touche pour continuer...
    A titre indicatif, je redonne vos deux requêtes :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    --------------
    select * from prod
    --------------
     
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       74784 |         26 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |       10320 |          5 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       53872 |         29 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       34000 |         17 |
    | Atelier | PZ       | 32x22   | 4       | S         | CE      | Rectangular |                | HH4S              |        1900 |          1 |
    | Atelier | PZ       | 32x22   | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 |
    | Atelier | PZ       | 32x22   | 5       | C         | CE      | Rectangular |                | HH5C              |       51732 |         34 |
    | Atelier | PZ       | 32x22   | 7       | P         | CE      | Rectangular |                | HH7P              |        8032 |          7 |
    | Atelier | PZ       | 35x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        4508 |          3 |
    | Atelier | PZ       | 35x25   | 5       | C         | CE      | Rectangular |                | HH5C              |       15694 |         11 |
    | Atelier | PZ       | 40x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       38834 |         25 |
    | Atelier | PZ       | 40x22   | 5       | C         | CE      | Rectangular |                | HH5C              |        1518 |          1 |
    | Atelier | PZ       | 40x25   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |        9716 |          9 |
    | Atelier | PZ       | 40x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3652 |          4 |
    | Atelier | PZ       | 45x25   | 7       | MX        | CE      | Rectangular | 35             | HH7M              |         698 |          1 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |                | HH5C              |        3858 |          5 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular | 19             | HH5C              |        5726 |          8 |
    | Atelier | PZ       | 50x25   | 5       | MX        | CE      | Rectangular | 19             | HH5M              |       11802 |         14 |
    | Atelier | PZ       | 50x37,5 | 5       | MX        | CE      | Rectangular |                | HH5M              |        3666 |          7 |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    --------------
    select * from cliente
    --------------
     
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 30x20  | 4       | C         | CE      | Rectangular |                | HH4C              |       19506 |         10 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       14956 |          8 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       18660 |         10 |
    | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       24000 |         12 |
    | Atelier | PZ       | 32x22  | 4       | S         | NF-D2   | Rectangular |                | HH4S              |       11400 |          6 |
    | Atelier | PZ       | 35x22  | 5       | C         | CE      | Rectangular |                | HH5C              |       15148 |         10 |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Donc si je comprends bien dans le dernier code que vous m'avez fourni,
    en rouge ce que j'ai a ce jour et en vert ce qui a ete envoyer ?
    Donc il me reste plus qu'a trouver comment faire la soustraction entre le rouge et le vert ?:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+--------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | Total  |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+--------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       74784 |         26 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  74784 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |                | HH4M              |       10320 |          5 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        | NULL           | NULL              |        NULL |       NULL |  10320 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |                | HH4C              |       53872 |         29 | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |                | HH4C              |       33616 |         18 |  20256 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       34000 |         17 | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |                | HH4P              |       24000 |         12 |  10000 |
    Aussi j'ai un problème je ne trouve pas les même résultats:

    sur ce code c'est OK:
    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
    SELECT  Nave,
                                Producto,
                                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                                Espesor,
                                Seleccion,
                                Marcado,
                                Formato,
                                Particularidad,
                                Codigo_referencia,
                                SUM(Piezas)                    AS TOTALPIEZAS,
                                COUNT(*)                       AS TOTALPALES
     
                          FROM  produccion
     
                         WHERE  Lote_cliente = ''
                            OR  Lote_cliente IS NULL
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    Celui-ci c'est Ok aussi :
    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
    SELECT  p.Nave,
                                p.Producto,
                                CONCAT(p.Longitud, 'x', p.Anchura) AS TAMANO,
                                p.Espesor,
                                p.Seleccion,
                                p.Marcado,
                                p.Formato,
                                p.Particularidad,
                                p.Codigo_referencia,
                                SUM(p.Piezas)                      AS TOTALPIEZAS,
                                COUNT(*)                           AS TOTALPALES
     
                          FROM  lote_cliente as l
     
                    INNER JOIN  produccion   as p
                            ON  p.lote_cliente = l.numero_lote_cliente
     
                         WHERE  l.fecha_preparacion = '2018-04-17'
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    Par contre pour le dernier :

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    select           p1.*,
                     p2.*,
                     p1.totalPiezas - coalesce(p2.totalPiezas,0) as Total
               from  (  SELECT  Nave,
                                Producto,
                                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                                Espesor,
                                Seleccion,
                                Marcado,
                                Formato,
                                Particularidad,
                                Codigo_referencia,
                                SUM(Piezas)                    AS TOTALPIEZAS,
                                COUNT(*)                       AS TOTALPALES
     
                          FROM  produccion
     
                         WHERE  Lote_cliente = ''
                            OR  Lote_cliente IS NULL
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     )  as p1
     
    left outer join  (  SELECT  p.Nave,
                                p.Producto,
                                CONCAT(p.Longitud, 'x', p.Anchura) AS TAMANO,
                                p.Espesor,
                                p.Seleccion,
                                p.Marcado,
                                p.Formato,
                                p.Particularidad,
                                p.Codigo_referencia,
                                SUM(p.Piezas)                      AS TOTALPIEZAS,
                                COUNT(*)                           AS TOTALPALES
     
                          FROM  lote_cliente as l
     
                    INNER JOIN  produccion   as p
                            ON  p.Lote_cliente = l.numero_lote_cliente
     
                         WHERE  l.fecha_preparacion = '2018-04-17'
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     ) as p2
                 on  p2.nave              = p1.nave
                and  p2.producto          = p1.producto
                and  p2.tamano            = p1.tamano
                and  p2.espesor           = p1.espesor
                and  p2.seleccion        = p1.seleccion
                and  p2.marcado           = p1.marcado
                and  p2.formato           = p1.formato
                and  p2.particularidad    = p1.particularidad
                and  p2.codigo_referencia = p1.codigo_referencia
     
           order by  p1.Nave, p1.Producto, p1.TAMANO, p1.Espesor, p1.Seleccion, p1.Marcado, p1.Formato, p1.Particularidad, p1.Codigo_referencia
    TOTALPIEZAS | TOTALPALES | Total j'ai que null comme ci il calcul pas la difference............

    Je joins l'exemple ici Personal1234.7z

  18. #18
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    3 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 3 626
    Points : 11 201
    Points
    11 201

    Par défaut

    Salut superthx.

    La structure de la requête que je vous ai fourni est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select      p1.*,
                p2.*
          from  (votre première requête) as p1
     
    inner join  ( votre seconde requête ) as p2
            on  les jointures entre p1 et p2
     
      order by  tri sur les colonnes;
    Citation Envoyé par superthx
    en rouge ce que j'ai a ce jour et en vert ce qui a ete envoyer ?
    Y-a-t-il un problème avec les colonnes TotalPizas et TotalPales ?

    Je reprends vos deux résultats en les mettant sous forme de tableau, comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    +------------------+-----------------+------------------+-----------------+--------------+------------+
    |  p1.TotalPiezas  |  p1.TotalPales  |  p2.TotalPiezas  |  p2.TotalPales  |  DiffPiezas  |  DiffPales |
    +------------------+-----------------+------------------+-----------------+--------------+------------+
    |      74 784      |        26       |        NULL      |      NULL       |    74 784    |     26     |
    |      10 320      |         5       |        NULL      |      NULL       |    10 320    |      5     |
    |      53 872      |        29       |      33 616      |        18       |    20 256    |     11     |
    |      34 000      |        17       |      24 000      |        12       |    10 000    |      5     |
    +------------------+-----------------+------------------+-----------------+--------------+------------+
    Nous avons bien :
    --> p1.TotalPiezas - p2.TotalPiezas = DiffPiezas
    --> p1.TotalPales - p2.TotalPales = DiffPales
    (Diff pour différence)

    J'ai vérifié les totaux et ils sont juste ! Ou est le problème ?

    J'ai repris votre nouveau jeu d'essai. Voici la première requête :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    --------------
    drop view if exists `prod`
    --------------
     
    --------------
    create view `prod` as
      SELECT    Nave,
                Producto,
                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                Espesor,
                Seleccion,
                Marcado,
                Formato,
                Particularidad,
                Codigo_referencia,
                SUM(Piezas)                    AS TOTALPIEZAS,
                COUNT(*)                       AS TOTALPALES
      FROM      Produccion
      WHERE     Lote_cliente = ''
         OR     Lote_cliente IS NULL
      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
      ORDER BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
    --------------
     
    --------------
    select * from prod
    --------------
     
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       74784 |         26 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |           NULL | HH4M              |       10320 |          5 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       53872 |         29 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       34000 |         17 |
    | Atelier | PZ       | 32x22   | 4       | S         | CE      | Rectangular |           NULL | HH4S              |        1900 |          1 |
    | Atelier | PZ       | 32x22   | 4       | S         | NF-D2   | Rectangular |           NULL | HH4S              |       11400 |          6 |
    | Atelier | PZ       | 32x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       51732 |         34 |
    | Atelier | PZ       | 32x22   | 7       | P         | CE      | Rectangular |           NULL | HH7P              |        8032 |          7 |
    | Atelier | PZ       | 35x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        4508 |          3 |
    | Atelier | PZ       | 35x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       15694 |         11 |
    | Atelier | PZ       | 40x22   | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       38834 |         25 |
    | Atelier | PZ       | 40x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        1518 |          1 |
    | Atelier | PZ       | 40x25   | 4       | MX        | NF-D2   | Rectangular |           NULL | HH4M              |        9716 |          9 |
    | Atelier | PZ       | 40x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        3652 |          4 |
    | Atelier | PZ       | 45x25   | 7       | MX        | CE      | Rectangular |             35 | HH7M              |         698 |          1 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        3858 |          5 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |             19 | HH5C              |        5726 |          8 |
    | Atelier | PZ       | 50x25   | 5       | MX        | CE      | Rectangular |             19 | HH5M              |       11802 |         14 |
    | Atelier | PZ       | 50x37,5 | 5       | MX        | CE      | Rectangular |           NULL | HH5M              |        3666 |          7 |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    Appuyez sur une touche pour continuer...[/code]
    Et voici la seconde requête :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    --------------
    drop view if exists `cliente`
    --------------
     
    --------------
    create view `cliente` as
      SELECT      p.Nave,
                  p.Producto,
                  CONCAT(p.Longitud, 'x', p.Anchura) AS TAMANO,
                  p.Espesor,
                  p.Seleccion,
                  p.Marcado,
                  p.Formato,
                  p.Particularidad,
                  p.Codigo_referencia,
                  SUM(p.Piezas)                      AS TOTALPIEZAS,
                  COUNT(*)                           AS TOTALPALES
     
            FROM  Lote_Cliente as l
      INNER JOIN  Produccion   as p
              ON  p.Lote_Cliente = l.numero_lote_cliente
           WHERE  l.fecha_preparacion = '2018-04-17'
      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
      ORDER BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia, Lote_cliente
    --------------
     
    --------------
    select * from `cliente`
    --------------
     
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
    | Atelier | PZ       | 30x20  | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       19506 |         10 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       14956 |          8 |
    | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       18660 |         10 |
    | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       24000 |         12 |
    | Atelier | PZ       | 32x22  | 4       | S         | NF-D2   | Rectangular |           NULL | HH4S              |       11400 |          6 |
    | Atelier | PZ       | 35x22  | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       15148 |         10 |
    +---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+
     
    Appuyez sur une touche pour continuer...
    Et voici la requête finale :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    --------------
    select           p1.*,
                     p2.*,
                     p1.totalPiezas - coalesce(p2.totalPiezas,0) as DiffPiezas,
                     p1.totalPales  - coalesce(p2.totalPales,0)  as DiffPales
               from  (  SELECT  Nave,
                                Producto,
                                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                                Espesor,
                                Seleccion,
                                Marcado,
                                Formato,
                                Particularidad,
                                Codigo_referencia,
                                SUM(Piezas)                    AS TOTALPIEZAS,
                                COUNT(*)                       AS TOTALPALES
     
                          FROM  Produccion
     
                         WHERE  Lote_cliente = ''
                            OR  Lote_cliente IS NULL
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     )  as p1
     
    left outer join  (  SELECT  p.Nave,
                                p.Producto,
                                CONCAT(p.Longitud, 'x', p.Anchura) AS TAMANO,
                                p.Espesor,
                                p.Seleccion,
                                p.Marcado,
                                p.Formato,
                                p.Particularidad,
                                p.Codigo_referencia,
                                SUM(p.Piezas)                      AS TOTALPIEZAS,
                                COUNT(*)                           AS TOTALPALES
     
                          FROM  Lote_Cliente as l
     
                    INNER JOIN  Produccion   as p
                            ON  p.Lote_Cliente = l.numero_lote_cliente
     
                         WHERE  l.fecha_preparacion = '2018-04-17'
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
                     ) as p2
                 on  p2.nave              = p1.nave
                and  p2.producto          = p1.producto
                and  p2.tamano            = p1.tamano
                and  p2.espesor           = p1.espesor
                and  p2.seleccion         = p1.seleccion
                and  p2.marcado           = p1.marcado
                and  p2.formato           = p1.formato
     
                and  p2.codigo_referencia = p1.codigo_referencia
     
           order by  p1.Nave, p1.Producto, p1.TAMANO, p1.Espesor, p1.Seleccion, p1.Marcado, p1.Formato, p1.Particularidad, p1.Codigo_referencia
    --------------
     
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+------------+-----------+
    | Nave    | Producto | TAMANO  | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | Nave    | Producto | TAMANO | Espesor | Seleccion | Marcado | Formato     | Particularidad | Codigo_referencia | TOTALPIEZAS | TOTALPALES | DiffPiezas | DiffPales |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+------------+-----------+
    | Atelier | PZ       | 27x18   | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       74784 |         26 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      74784 |        26 |
    | Atelier | PZ       | 30x20   | 4       | MX        | NF-D2   | Rectangular |           NULL | HH4M              |       10320 |          5 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      10320 |         5 |
    | Atelier | PZ       | 32x22   | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       53872 |         29 | Atelier | PZ       | 32x22  | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       33616 |         18 |      20256 |        11 |
    | Atelier | PZ       | 32x22   | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       34000 |         17 | Atelier | PZ       | 32x22  | 4       | P         | NF-D1   | Rectangular |           NULL | HH4P              |       24000 |         12 |      10000 |         5 |
    | Atelier | PZ       | 32x22   | 4       | S         | CE      | Rectangular |           NULL | HH4S              |        1900 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       1900 |         1 |
    | Atelier | PZ       | 32x22   | 4       | S         | NF-D2   | Rectangular |           NULL | HH4S              |       11400 |          6 | Atelier | PZ       | 32x22  | 4       | S         | NF-D2   | Rectangular |           NULL | HH4S              |       11400 |          6 |          0 |         0 |
    | Atelier | PZ       | 32x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       51732 |         34 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      51732 |        34 |
    | Atelier | PZ       | 32x22   | 7       | P         | CE      | Rectangular |           NULL | HH7P              |        8032 |          7 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       8032 |         7 |
    | Atelier | PZ       | 35x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        4508 |          3 | Atelier | PZ       | 35x22  | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       15148 |         10 |     -10640 |        -7 |
    | Atelier | PZ       | 35x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |       15694 |         11 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      15694 |        11 |
    | Atelier | PZ       | 40x22   | 4       | C         | CE      | Rectangular |           NULL | HH4C              |       38834 |         25 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      38834 |        25 |
    | Atelier | PZ       | 40x22   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        1518 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       1518 |         1 |
    | Atelier | PZ       | 40x25   | 4       | MX        | NF-D2   | Rectangular |           NULL | HH4M              |        9716 |          9 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       9716 |         9 |
    | Atelier | PZ       | 40x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        3652 |          4 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       3652 |         4 |
    | Atelier | PZ       | 45x25   | 7       | MX        | CE      | Rectangular |             35 | HH7M              |         698 |          1 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |        698 |         1 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |           NULL | HH5C              |        3858 |          5 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       3858 |         5 |
    | Atelier | PZ       | 50x25   | 5       | C         | CE      | Rectangular |             19 | HH5C              |        5726 |          8 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       5726 |         8 |
    | Atelier | PZ       | 50x25   | 5       | MX        | CE      | Rectangular |             19 | HH5M              |       11802 |         14 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |      11802 |        14 |
    | Atelier | PZ       | 50x37,5 | 5       | MX        | CE      | Rectangular |           NULL | HH5M              |        3666 |          7 | NULL    | NULL     | NULL   | NULL    | NULL      | NULL    | NULL        |           NULL | NULL              |        NULL |       NULL |       3666 |         7 |
    +---------+----------+---------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+---------+----------+--------+---------+-----------+---------+-------------+----------------+-------------------+-------------+------------+------------+-----------+
     
    Appuyez sur une touche pour continuer...
    Comme le jeu d'essai n'est pas le même que le premier que vous m'avez comuniquez, il se peut qu'il existe des différences.
    Or je constate que sur nos quatre premières lignes, je trouve exactement le même résultat que dans le tableau ci-dessus.

    Si le résultat n'est pas conforme à ce que vous attendez, expliquez-vous sur ce qui ne vous convient pas.
    Autrement dit, donnez moi les bons résultats que vous attendez.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Merci, je reviens à vous dés que possible....

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    juillet 2003
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : juillet 2003
    Messages : 230
    Points : 97
    Points
    97

    Par défaut

    Pour la requête final cela n'est pas bon dans mes test.
    Je m'explique.
    Si le code:
    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
    SELECT  Nave,
                                Producto,
                                CONCAT(Longitud, 'x', Anchura) AS TAMANO,
                                Espesor,
                                Seleccion,
                                Marcado,
                                Formato,
                                Particularidad,
                                Codigo_referencia,
                                SUM(Piezas)                    AS TOTALPIEZAS,
                                COUNT(*)                       AS TOTALPALES
     
                          FROM  Produccion
     
                         WHERE  Lote_cliente = ''
                            OR  Lote_cliente IS NULL
     
                      GROUP BY  Nave, Producto, TAMANO, Espesor, Seleccion, Marcado, Formato, Particularidad, Codigo_referencia
    Il va rechercher que ce qui est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Lote_cliente = '' OR  Lote_cliente IS NULL
    et bien sur prendre ce qui est fait après le 2018-04-17, donc il faudrait qu'il prenne en compte que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE  Fecha<= '2017-04-17'
    ainsi on élimine ce qui a été produit après le 2018-04-17.
    Puis ce qui est sortie du stock dans la table Lote_Cliente <= 2018-04-17

    En résumé, sélectionner tous les produits entrées en stock jusqu'au 2018-04-17 (en eliminant ce qui est sorti de Lote_Cliente jusqu'au 2018-04-17 tout en gardant ce qui est null dans Produccion.Lote_cliente)et les sorties de Lote_Cliente jusqu'au 2018-04-17 inclus

Discussions similaires

  1. Erreur 1241 : operand should contain 1 column
    Par PierrePM13 dans le forum Requêtes
    Réponses: 3
    Dernier message: 30/12/2015, 13h47
  2. Réponses: 2
    Dernier message: 16/05/2015, 17h24
  3. Réponses: 0
    Dernier message: 21/04/2011, 21h47
  4. #1241 - Operand should contain 1 column(s)
    Par Mister Paul dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/11/2008, 16h59
  5. #1241 - Operand should contain 1 column(s)
    Par yanidan dans le forum Requêtes
    Réponses: 8
    Dernier message: 29/02/2008, 16h30

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