IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage SQL Discussion :

Multi requête


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut Multi requête
    j'ai un petit souci de base de données. je dois faire une requête que je n'arrive pas à faire!
    Donc j'ai une table de données R1_L1_DONNEES et R1_L2_DONNEES.
    J'ai besoin de faire une recherche sur la variable NUMERO_LOT_PRODUIT_x pour chaque poste.
    Du coup j'ai fait les requêtes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_1 FROM R1_L1_DONNEES Where R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%'
    SELECT R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_2 FROM R1_L1_DONNEES Where R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    SELECT R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_3 FROM R1_L1_DONNEES Where R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%'
    SELECT R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_4 FROM R1_L1_DONNEES Where R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%'
    SELECT R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_5 FROM R1_L1_DONNEES Where R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%'
    Elles marchent bien. Le seul problème que j'ai est que je n'arrive pas à savoir comment les lier.

    Je voudrais qu'au final, j'ai le tableau suivant

    NUMERO_LOT ---- QUANTITEE
    PREMIER TEST LIGNE BURGERS ---- 24
    Lot 1 ---- 1
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip DB.zip (243,0 Ko, 43 affichages)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il faut regarder du côté de l'UNION.

    Tatayo.

    P.S. si la table avait une colonne "numéro de poste", au lieu d'une colonne par poste, la requête aurait été bien plus simple...

  3. #3
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Merci pour la réponse. Par contre je suis pas vraiment un expert en SQL. Je ne sais faire que des requêtes simples. Pourrais tu détailler un peu plus ce que tu m'as dit?

    Sinon la table est modifiable. Je peux ajouter le numéro de poste si besoin. Par contre je vois pas en quoi ça le simplifierais la requête.

    Merci d'avance

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Si tu ajoutes le numéro de poste dans la table, ta suite de requête devient:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select R1_L1_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT like '%bac%' and NO_POSTE between 1 and 5
    De plus tu n'as plus à toucher la structure de la table en cas d'ajout (ou de suppression) d'un poste.

    Sinon pour l'UNION, ça se passe .

    Tatayo.

  5. #5
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Merci pour la réponse.

    Je vais essayer de regarder du côté de l'UNION car le fait d'ajouter le numéro de poste me ferais changer énormément mes autres requêtes déjà en place.

  6. #6
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Merci pour tes informations.
    J'ai trouvé la solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With TABLE_TEMPORAIRE AS 
    (SELECT R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_1 AS NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%'
    UNION
    SELECT R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_2 AS NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    UNION
    SELECT R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_3 AS NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%'
    UNION
    SELECT R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_4 AS NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%'
    UNION
    SELECT R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT, R1_L1_DONNEES.NBRE_DOSES_POSTE_5 AS NBRE_DOSES FROM R1_L1_DONNEES WHERE R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' )
    Select NUM_LOT, SUM(NBRE_DOSES) FROM TABLE_TEMPORAIRE 
    Group by NUM_LOT

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Ceci doit fonctionner aussi, et éviter de multiplier les scans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    SELECT
        NUMERO_LOT AS NUM_LOT,
        SUM(
             CASE WHEN NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS NBRDOSES
    FROM R1_L1_DONNEES
    GROUP BY NUMERO_LOT
    Edit : il faudra peut être ajouter un filtre pour éviter d'avoir des lignes en plus (celles n'ayant aucune des colonnes vérifiant le LIKE)

  8. #8
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Merci j'ai essayé et ça marche aussi.

    Par contre ça c'est ma première requête qui me donne le tableau suivant:

    NUMERO_LOT -- NBRE_DOSES

    au finale j'ai 2 requêtes identiques donc j'aurais les tableaux suivants:

    NUMERO_LOT -- R1_L1_NBRE_DOSES et NUMERO_LOT -- R1_L2_NBRE_DOSES

    Y'a t'il un moyen d'avoir au final 1 seul tableau du type:

    NUMERO_LOT -- R1_L1_NBRE_DOSES -- R1_L2_NBRE_DOSES

  9. #9
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    J'ai fait cette requête la par rapport à celle que tu m'as donné
    Elle a l'air de marcher. Peux-tu me dire si jamais il y a mieux.
    Merci

    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
        R1_L1_DONNEES.NUMERO_LOT AS NUM_LOT,
        SUM(
             CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L1_NBR_DOSES,
         SUM(
             CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L2_NBR_DOSES
    FROM R1_L1_DONNEES INNER JOIN R1_L2_DONNEES ON R1_L1_DONNEES.NUMERO_LOT = R1_L2_DONNEES.NUMERO_LOT
    GROUP BY R1_L1_DONNEES.NUMERO_LOT

  10. #10
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    J'ai un souci avec cette requête.

    Si jamais j'ai un numéro de lot qui est seulement dans une des 2 tables. Le nombre de doses n'est pas affiché.

    Si quelqu'un a une idée je suis preneur.

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    C'est normal, vu que tu as utilisé une jointure interne.
    Je dirai ici qu'il faut:
    • Soit passer par un full outer join
    • Soit si elle existe partir de la table des lots, et utiliser 2 jointures externes

    Tatayo.

  12. #12
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Merci.

    Avec le Full outer Join ça marche. Par contre je dois afficher soit le numéro de lot R1_L1_NUMERO_LOT soit le R1_L2_NUMERO_LOT suivant les si les nombres de doses ce situe dans la table R1_L1_DONNEES ou R1_L2_DONNES.
    Du coup, j'ai pensé faire un CASE comme écrit dans le code ci-dessous.

    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
    SELECT (CASE 
    		WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' or R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    		 OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' or R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' 
    		 OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%'
    		THEN R1_L1_DONNEES.NUMERO_LOT ELSE 
    		(CASE 
    		WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' or R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    		 OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' or R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' 
    		 OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%'
    		THEN R1_L2_DONNEES.NUMERO_LOT END)  END) AS NUM_LOT,
             SUM(CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L1_NBR_DOSES,
         SUM(
             CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L2_NBR_DOSES
    FROM R1_L1_DONNEES full outer join R1_L2_DONNEES ON R1_L1_DONNEES.NUMERO_LOT = R1_L2_DONNEES.NUMERO_LOT
    GROUP BY R1_L1_DONNEES.NUMERO_LOT
    Le problème est qu'il me renvoie des erreurs

    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
    Msg*8120, Niveau*16, État*1, Ligne*7
    La colonne 'R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*7
    La colonne 'R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*8
    La colonne 'R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*8
    La colonne 'R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*9
    La colonne 'R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*12
    La colonne 'R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*12
    La colonne 'R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*13
    La colonne 'R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*13
    La colonne 'R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*14
    La colonne 'R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Msg*8120, Niveau*16, État*1, Ligne*15
    La colonne 'R1_L2_DONNEES.NUMERO_LOT' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    Du coup je vois pas comment je peux faire...

  13. #13
    Membre habitué
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2006
    Messages : 113
    Points : 130
    Points
    130
    Par défaut
    Cette fois si c'est bon j'ai le tableau qu'il me faut en résultat. Merci pour vos aides, elles m'auront été précieuses.

    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
    SELECT (CASE 
    		WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    		 OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' 
    		 OR R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%'
    		THEN R1_L1_DONNEES.NUMERO_LOT ELSE 
    		(CASE 
    		WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%'
    		 OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' 
    		 OR R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%'
    		THEN R1_L2_DONNEES.NUMERO_LOT END)  END) AS NUM_LOT,
             SUM(CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L1_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L1_NBR_DOSES,
         SUM(
             CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_1 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_2 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_3 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_4 ELSE 0 END
            +CASE WHEN R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5 LIKE N'%bac%' THEN R1_L2_DONNEES.NBRE_DOSES_POSTE_5 ELSE 0 END
         ) AS R1_L2_NBR_DOSES
    FROM R1_L1_DONNEES full OUTER JOIN R1_L2_DONNEES ON R1_L1_DONNEES.NUMERO_LOT = R1_L2_DONNEES.NUMERO_LOT
    GROUP BY R1_L1_DONNEES.NUMERO_LOT, R1_L2_DONNEES.NUMERO_LOT, R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1, R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2, R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3, R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4, R1_L1_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5, R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_1, R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_2, R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_3, R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_4, R1_L2_DONNEES.NUMERO_LOT_PRODUIT_POSTE_5

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Multi requêtes avec alias
    Par zebiloute dans le forum Requêtes
    Réponses: 5
    Dernier message: 06/06/2008, 14h10
  2. multi-requètes HTTP asynchrones
    Par nds75000 dans le forum VB.NET
    Réponses: 4
    Dernier message: 27/10/2007, 22h13
  3. [AJAX] Ajax multi requêtes VS Hebergement
    Par zhell dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/04/2007, 18h06
  4. Etat multi requêtes
    Par frevale dans le forum Access
    Réponses: 25
    Dernier message: 02/01/2006, 15h12
  5. [ADO] probleme de multi requête
    Par Grey dans le forum MFC
    Réponses: 3
    Dernier message: 01/12/2005, 16h40

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