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 PHP Discussion :

union et order by


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut union et order by
    Bonjour,

    Voici ma requête mysql:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT L1, L2, L4, L10 FROM table1 
    UNION ALL 
    SELECT L1, L2, L4, L10 FROM  table2 
    ORDER BY 'date'

    J'obtiens les données voulues des deux tables mais triées chacune séparément d'abord la table1 par date puis la table2 par date or j'ai besoin de trier l'ensemble des résultats par date comme si les données provenait d'une seule table...

    Merci d'avance pour votre précieuse aide

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Etrange le résultat que tu obtiens ... et comme ca ?
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    (
      SELECT L1, L2, L4, L10 FROM table1 
      UNION ALL 
      SELECT L1, L2, L4, L10 FROM table2
    ) 
    ORDER BY 'date'
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Avec les parenthèses j'obtiens une erreur :

    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION ALL SELECT L1, L2, L4, L10 FROM table2) ORDER BY 'date'' at line 1

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Est ce que tu as le meme problème avec un UNION simple ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Oui même problème avec Union ou Union all ...

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Bonjour,

    Pour que ton résultat soit trié, il faut que tu passe par des sous requêtes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT * FROM 
    ( SELECT L1, L2, L4, L10,date FROM table1 UNION ALL SELECT L1, L2, L4, L10,date  FROM table2) AS resultat ORDER BY 'date'
    ainsi , l'ensemble de ton union sera triée

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Bonjour,

    J'ai le même résultat... La requête reste triée par table

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    A copier coller quand tu nous tiens !

    Change
    Par

    'Date' et une chaine de caractère est non un nom de champ

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Si je retire les guillemets j'ai l'erreur suivante:

    Unknown column 'date' in 'order clause'


  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Re post la requete que tu execute.

    Tu as bien ajouter dans les deux select de ton union le champ date ?

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Voici la requête :

    SELECT * FROM ( SELECT L1, L2, L4, L10, date FROM table1 UNION ALL SELECT L1, L2, L4, L10, date FROM table2) AS resultat ORDER BY date

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Je vois rien du tout ce matin ^^.

    Date est un mot réservé. Renomme ton champ dans la requete

    SELECT * FROM ( SELECT L1, L2, L4, L10, date as date1 FROM table1 UNION ALL SELECT L1, L2, L4, L10, date as date1 FROM table2) AS resultat ORDER BY date1

    Tu devrais également renommer les champs de tes tables pour palier à ce problème.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    toujours pas... même message d'erreur...

    visiblement il préfère avec guillemet...

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Bien,

    Quel est la version de ton serveur MySql ?

    et essaye cette requete ( mais j'y crois pas)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM ( SELECT L1, L2, L4,  `date`  FROM table1 UNION ALL SELECT L1, L2, L4,  `date`  FROM table2) AS resultat ORDER BY `date`
    PS: cette requete fonctionne parfaitement sur un serveur MySql 5.1.33

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    Version du serveur: 5.0.67

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    SELECT * FROM ( SELECT L1, L2, L4, `date` FROM table1 UNION ALL SELECT L1, L2, L4, `date` FROM table2) AS resultat ORDER BY `date`

    Cette requête fonctionne, pas de message d'erreur, mais le trie ne se fait pas sur l'ensemble des données... elle me trie la table1 puis table2

  17. #17
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Tu peux donner quelques enregistrements de la table1 et de la table2 pour voir les données sur lesquelles tu travail.

    Et aussi la structure de tes tables

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 28
    Par défaut
    ARF a y est je viens de voir ma connerie !!! désolée !
    j'ai une table avec un pain au niveau de l'année (2008 au lieu de 2009)

    Je viens de corriger ça et c'est tout bon, ça ne venais pas de la requête

    Toutes mes excuses pour le dérangement !

    Encore merci !

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

Discussions similaires

  1. "not null" avec union et order by
    Par cauriera dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/01/2007, 16h14
  2. [SQL] union et order by
    Par lazzeroni dans le forum Oracle
    Réponses: 2
    Dernier message: 11/07/2006, 16h08
  3. union et order by
    Par karimspace dans le forum Access
    Réponses: 2
    Dernier message: 05/01/2006, 14h32
  4. [MySQL] Union et order by
    Par Klaim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/11/2004, 16h29
  5. Problème requête avec UNION et ORDER BY
    Par Yann21 dans le forum Langage SQL
    Réponses: 12
    Dernier message: 12/12/2003, 11h02

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