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 :

2 tableaux différents et réordonner les résultats par leurs dates


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut 2 tableaux différents et réordonner les résultats par leurs dates
    Bonjour,

    Ceci est pour l'instant trop complexe à traiter pour moi, alors j'ai fait 2 requêtes sql différentes et recombiné les résultats en PHP en les réordonnant selon la valeur de la colonne date résultante. Mais existe-t-il une requête pour cela?

    Le but ici est de faire une requête réunissant 2 tableaux différents et réordonner les résultats par leurs dates. Pour le premier tableau la colonne dates est comment_date_gmt, et pour le deuxième tableau post_date_gmt, deux colonne de type identique (datetime)

    De plus la requête vers le premier tableau doit aussi joindre une requête vers le second tableau sur id identiques (pour accéder au titre de l'article où le commentaire a été fait)

    Ce code-là me donne bien les derniers commentaires avec les titres des articles, mais comment faire à partir de là pour y mélanger les derniers articles?

    Le résultat doit être une liste des derniers articles ET des derniers commentaires classés par date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT ID, post_title, comment_date_gmt, post_password, comment_ID, comment_post_ID, comment_author, comment_approved, comment_type, comment_content
    		FROM comments 
    		LEFT OUTER JOIN posts ON (comments.comment_post_ID = posts.ID) 
    		WHERE comment_approved = '1' AND comment_type = '' AND post_password = '' 
    		ORDER BY comment_date_gmt DESC 
    		LIMIT 5

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    De manière générale, il me semble que ce que tu veux faire est une UNION...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT col1, col2, col3
    FROM ...
    UNION ALL
    SELECT colA, colB, colC
    FROM...
    ORDER BY col3
    Les astuces et contraintes :
    • il doit y avoir autant de colonnes dans chacune des deux requêtes
    • les types des colonnes correspondantes (par ex. col1 et colA) doivent être compatibles
    • les alias de colonnes sont toujours ceux de la première requête
    • la clause ORDER BY se met à la fin et concerne toute l'UNION

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    Hélas je n'ai pas le même nombre de colonne dans les tableaux... Le tableau des post est plus grand que celui des comment. Mais ca ne remplacerait pas par NULL?
    Et le type de colonnes n'est pas toujours compatible...
    Sinon oui ce serait comme un UNION mais par une seule colonne dont le data et type sont compatibles.

  4. #4
    Membre expert
    Avatar de Maljuna Kris
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2005
    Messages
    2 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Points : 3 950
    Points
    3 950
    Par défaut
    Saluton,
    Les colonnes manquantes peuvent être remplacées positionnellement par des NULL dans les SELECT, quant à l'incompatibilité des types de colonnes il faut voir si l'on ne pourrait pas les caster.
    Peut-on voir un SHOW CREATE TABLE des deux tables ?

Discussions similaires

  1. afficher les résultats par groupe avec code igniter
    Par rheritahiana dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 04/04/2011, 11h02
  2. Réponses: 0
    Dernier message: 11/11/2010, 23h35
  3. [SQL] Grouper les résultats par heures
    Par Fused dans le forum Langage SQL
    Réponses: 1
    Dernier message: 02/09/2009, 17h35
  4. [XL-2007] Trier les résultats par date et nom
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/08/2009, 16h23
  5. Moteur de recherche : comment trier les résultats par pertinence
    Par aucunIDdeLibre dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/12/2007, 13h42

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