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

Requêtes MySQL Discussion :

UNION ALL Requête


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Points : 90
    Points
    90
    Par défaut UNION ALL Requête
    Bonjour,

    J'ai un soucis de trie avec mon UNION ALL

    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
    Erreur SQL !
    SELECT pays.pays,indicateur.indicateur,periodicite.periodicite,source.source,description1.description1,description2.description2,DATE_FORMAT(dates,'%m/%d/%Y') ,donnee 
    FROM donnees,pays,indicateur,source,periodicite,description1,description2 
    WHERE pays.ID_pays = donnees.ID_pays 
    AND indicateur.ID_indicateur = donnees.ID_indicateur 
    AND periodicite.ID_periodicite = donnees.ID_periodicite AND source.ID_source = donnees.ID_source 
    AND description1.ID_description1 = donnees.ID_description1 
    AND description2.ID_description2 = donnees.ID_description2 
    AND `pays` = "Allemagne" 
    AND `indicateur` = "Croissance du PIB " 
    AND `periodicite` = "quarter" AND `source` = "source Destatis"
    AND `description1` = "variation annuelle en pourcentage" AND dates BETWEEN '2007-01-01'
    AND '2020-01-01' 
    UNION ALL SELECT pays.pays,indicateur.indicateur,periodicite.periodicite,source.source,description1.description1,description2.description2,DATE_FORMAT(dates,'%m/%d/%Y') ,donnee 
    FROM donnees,pays,indicateur,source,periodicite,description1,description2 
    WHERE pays.ID_pays = donnees.ID_pays 
    AND indicateur.ID_indicateur = donnees.ID_indicateur 
    AND periodicite.ID_periodicite = donnees.ID_periodicite 
    AND source.ID_source = donnees.ID_source 
    AND description1.ID_description1 = donnees.ID_description1
    AND description2.ID_description2 = donnees.ID_description2 
    AND `pays` = "Allemagne" AND `indicateur` = "Croissance du PIB " AND `periodicite` = "quarter" 
    AND `source` = "source Destatis" 
    AND `description1` = "variation trimestrielle en pourcentage" 
    AND dates 
    BETWEEN '2007-01-01' 
    AND '2020-01-01' 
    ORDER BY pays, indicateur, periodicite, description1, description2, dates ASC
    Unknown column 'dates' in 'order clause'

    C'est surement du a mon FORMAT_DATE ....

  2. #2
    Membre régulier Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Points : 90
    Points
    90
    Par défaut
    Enfin ^^ c'est bien le format_date il faut changer de nom pour l'ALIAS

    http://www.geeksww.com/tutorials/dat...d_order_by.php

    Cool

  3. #3
    Membre régulier Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Points : 90
    Points
    90
    Par défaut
    Non ça marche pas

  4. #4
    Membre régulier Avatar de tidou95220
    Homme Profil pro
    BI junior
    Inscrit en
    Novembre 2008
    Messages
    263
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : BI junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2008
    Messages : 263
    Points : 90
    Points
    90
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT pays.pays,indicateur.indicateur,periodicite.periodicite,source.source,description1.description1,description2.description2,DATE_FORMAT(dates,'%m/%d/%Y') AS dates ,donnee FROM donnees,pays,indicateur,source,periodicite,description1,description2 WHERE pays.ID_pays = donnees.ID_pays AND indicateur.ID_indicateur = donnees.ID_indicateur AND periodicite.ID_periodicite = donnees.ID_periodicite AND source.ID_source = donnees.ID_source AND description1.ID_description1 = donnees.ID_description1 AND description2.ID_description2 = donnees.ID_description2 AND `pays` = "Allemagne" AND `indicateur` = "Croissance du PIB " AND `periodicite` = "quarter" AND `source` = "source Destatis" AND `description1` = "variation trimestrielle en pourcentage" AND dates BETWEEN '2007-01-01' AND '2020-01-01' 
    UNION ALL 
    SELECT pays.pays,indicateur.indicateur,periodicite.periodicite,source.source,description1.description1,description2.description2,DATE_FORMAT(dates,'%m/%d/%Y') AS dates ,donnee FROM donnees,pays,indicateur,source,periodicite,description1,description2 WHERE pays.ID_pays = donnees.ID_pays AND indicateur.ID_indicateur = donnees.ID_indicateur AND periodicite.ID_periodicite = donnees.ID_periodicite AND source.ID_source = donnees.ID_source AND description1.ID_description1 = donnees.ID_description1 AND description2.ID_description2 = donnees.ID_description2 AND `pays` = "Allemagne" AND `indicateur` = "Croissance du PIB " AND `periodicite` = "quarter" AND `source` = "source Destatis" AND `description1` = "variation trimestrielle en pourcentage" AND dates BETWEEN '2007-01-01' AND '2020-01-01' ORDER BY pays, indicateur, periodicite, description1, description2, donnees.dates ASC
    #1054 - Unknown column 'donnees.dates' in 'order clause'

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Une bonne révision en SQL serait utile !

    1) Avec des alias et correctement indentée et aérée, une requête est plus agréable à lire.

    2) Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN. Ça fait quand même 20 ans !

    3) Inutile d'entourer les noms de colonnes et de tables avec des apostrophes inversées lorsqu'ils ne sont pas d'une forme pouvant poser problème.

    4) Les valeurs textuelles s'entourent d'apostrophes, pas de guillemets.

    5) Pourquoi faire un UNION ALL alors qu'il me semble qu'un IN suffirait à ramener toutes les données voulues ?

    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
    SELECT p.pays,
    	i.indicateur,
    	pr.periodicite,
    	s.source,
    	description1.description1,
    	description2.description2,
    	DATE_FORMAT(dates,'%m/%d/%Y'), -- ajouter un alias et dates vient de quelle table ?
    	donnee -- vient de quelle table ?
    FROM donnees d
    INNER JOIN pays p ON p.ID_pays = d.ID_pays
    INNER JOIN indicateur i ON i.ID_indicateur = d.ID_indicateur
    INNER JOIN source s ON s.ID_source = d.ID_source
    INNER JOIN periodicite pr ON p.ID_periodicite = d.ID_periodicite
    INNER JOIN description1 d1 ON d1.ID_description1 = d.ID_description1
    INNER JOIN description2 d2 ON d2.ID_description2 = d.ID_description2 
    WHERE p.pays = 'Allemagne'
    	AND i.indicateur = 'Croissance du PIB'
    	AND pr.periodicite = 'quarter' 
    	AND s.source = 'source Destatis'
    	AND d1.description1 IN ('variation annuelle en pourcentage', 'variation trimestrielle en pourcentage')  
    	AND dates BETWEEN '2007-01-01' AND '2020-01-01' -- de quelle table vient la colonne dates ?
    ORDER BY p.pays, i.indicateur, pr.periodicite, d1.description1, d2.description2, dates -- de quelle table provient dates ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. [AC-2010] Résultat Requête SQL UNION ALL
    Par Car0le dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/02/2014, 10h23
  2. Optimisation d'une requête avec UNION ALL
    Par jgfa9 dans le forum Requêtes
    Réponses: 11
    Dernier message: 01/08/2012, 21h53
  3. Variable Incrémentale et requête union all
    Par Christophe Charron dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/05/2009, 10h08
  4. [AC-2003] Requête Union all avec nbre de colonnes différents
    Par souketou dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/05/2009, 14h40
  5. Calcul de % sur une requête UNION ALL
    Par lodan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 08/03/2007, 14h20

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