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 :

UNION :nom de colonne incorrect


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut UNION :nom de colonne incorrect
    Bonsoir

    je rencontre un probleme avec ma requête, la voici :

    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 tt.Nom_dd, sum(tt.cn)as NombreInc, sum(tt.c) as NombreAcci,sum(tt.r) as NombreTravaux from
    (
    (select p.Nom_dd, count(*) as cn from Incident i
    join DP p on (p.Nom_dp = i.Nom_dp)
    where CONVERT ( varchar(10) , i.Date_cou,103) = '01/01/2010' 
    group by p.Nom_dd, i.Date_cou
    )
    union
     
    (select p.Nom_dd, count(*) as c from Accident a
    join DP p on p.Nom_dp = a.Nom_dp
    where CONVERT ( varchar(10) , a.Date_acc,103) = '26/05/2011' 
    group by p.Nom_dd, a.Date_acc
    )
     
    UNION
     
    (select Nom_dd, count(*) as r from Travaux
    where CONVERT ( varchar(10) , DateCou_tra,103) = '27/05/2011' 
    group by Nom_dd, DateCou_tra
    )
     
    )as tt
     
    group by tt.Nom_dd
    L'erreur :
    Serveur*: Msg 207, Niveau 16, État 3, Ligne 1
    'c' : nom de colonne incorrect.
    Serveur*: Msg 207, Niveau 16, État 1, Ligne 1
    'r' : nom de colonne incorrect.
    je n'arrive pas a corrigé cette erreur!!!
    Pourquoi tt.cn il la prend normale et tt.c, tt.r il la détecte comme un nom de colonne incorrect !?

    Merci de votre aide

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 400
    Points
    28 400
    Par défaut
    Parce que dans une UNION, ce sont les noms de colonnes de la première partie de l'union qui sont conservés, les autres étant ignorés.
    Essaye comme ça :
    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
    SELECT tt.Nom_dd, sum(tt.cn)AS NombreInc, sum(tt.c) AS NombreAcci,sum(tt.r) AS NombreTravaux FROM
    (
    (SELECT p.Nom_dd, count(*) AS cn, 0 AS c, 0 as r
    FROM Incident i
    JOIN DP p ON (p.Nom_dp = i.Nom_dp)
    WHERE CONVERT ( varchar(10) , i.Date_cou,103) = '01/01/2010' 
    GROUP BY p.Nom_dd, i.Date_cou
    )
    union
     
    (SELECT p.Nom_dd, 0, count(*), 0
    FROM Accident a
    JOIN DP p ON p.Nom_dp = a.Nom_dp
    WHERE CONVERT ( varchar(10) , a.Date_acc,103) = '26/05/2011' 
    GROUP BY p.Nom_dd, a.Date_acc
    )
     
    UNION
     
    (SELECT Nom_dd, 0, 0, count(*) 
    FROM Travaux
    WHERE CONVERT ( varchar(10) , DateCou_tra,103) = '27/05/2011' 
    GROUP BY Nom_dd, DateCou_tra
    )
     
    )AS tt
     
    GROUP BY tt.Nom_dd

  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Mille Merci al1_24

    ça marche très bien, Merci

  4. #4
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    J'ai une question, Si vous me permettez !

    ma requête fonctionne correctement, mais je veux introduire quelques améliorations mais je ne sais pas si je peux le faire avec sql ou pas !

    Ce que je veux rajouter :

    - j'ai une table DD où il y a toutes les DD existantes (Nom_dd), dans ma requête je suis en train d'extraire uniquement les DD touchées par des incidents ou accidents ou travaux au jour J, Est-ce que je peux demander à ma requête de m'afficher toutes les Nom_dd de la table DD, et si cette DD au jour J n'a été touché ni par incident ni par Accident ou Travaux Alors elle aura la valeur 0. C'est a dire au jour J cette DD a eu 0 Incident, 0 Travaux et 0 Accident ?!

    - Rajouter aussi à la fin du tableau qui sera affiché c'est a dire après avoir affiché toutes les Nom_dd juste après mettre Total, et dans les colonnes 'NombreInc', 'NombreAccident' et 'NombreTravaux' j'affiche la somme de chaque colonne ?!

    Peut être que je demande trop

    Mais ce que je voudrais savoir, Est t'il possible de faire tout ça en Sql, ou bien il faut que j'introduis un langage de programmation ?!

    Merci pour votre attention

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

Discussions similaires

  1. Nom de colonne incorrect
    Par belu33fr dans le forum Développement
    Réponses: 5
    Dernier message: 13/10/2009, 14h41
  2. [JTable] les noms des colonnes de s'affichent pas
    Par macben dans le forum Composants
    Réponses: 6
    Dernier message: 25/04/2008, 11h03
  3. 'rowguidcol' : nom de colonne incorrect.
    Par zalalus dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/06/2007, 14h28
  4. Noms de colonne dans une colonne
    Par Digirom dans le forum Langage SQL
    Réponses: 14
    Dernier message: 23/04/2004, 11h51
  5. Mauvais noms de colonnes lors d'une requête
    Par nmathon dans le forum Bases de données
    Réponses: 2
    Dernier message: 09/04/2004, 07h27

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