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

PHP & Base de données Discussion :

recherche du bon critere pour ma requete


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut recherche du bon critere pour ma requete
    bonjour,

    j'utilise une requete basée sur 3 tables comme ceci :

    recherche de la categorie ds la table categorie
    la requete va chercher tous les articles de la categorie ds la table article, et je voudrai qu elle aille chercher le taux le plus recent pour chaque article dans la table categorie.

    taux :
    ils sont journaliers, et chaque jour je met à jour les taux de tous les articles et l'inscrit ds la table.

    un enregistrement de la table taux comprend ces informations :
    ID ---- ID_article ---- date_taux ---- markup_achat ---- markup_auction

    je me retrouve donc avec cette requette :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $reponse = $bdd->query('SELECT categories.categorie, articles.nom_refined, rates.markup_achat, rates.markup_auction 
    						FROM (categories INNER JOIN articles ON categories.ID = articles.ID_categorie) left JOIN rates ON articles.ID = rates.ID_article
    						WHERE categories.categorie ="Ores"');
    je ne trouve pas le code et le critere me permettant de ressortir le max(date) de chaque article ...

    si quelqu un a une solution je suis preneur

    merci d'avance

  2. #2
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    si t'ajoutes max(date_taux) dans tes champs ça marche pas avec une jointure + sous-requête ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    reponse = $bdd->query('SELECT MAX(date_taux), categories.categorie, articles.nom_refined, rates.markup_achat, rates.markup_auction 
    						FROM (categories INNER JOIN articles ON categories.ID = articles.ID_categorie) left JOIN rates ON articles.ID = rates.ID_article
    						WHERE categories.categorie ="Ores"');

  3. #3
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    La fonction MAX() fera que MySQL retournera 1 seule ligne, la date la plus récente.

    Si le but est de retourner plusieurs lignes, tous les article les plus récents de la catégorie, alors une autre solution est de faire un tri :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ... etc ... ORDER BY articles.date_taux DESC

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    (Effectivement je dis nimp ^^, répondu un peu vite...)

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 73
    Par défaut
    coucou et merci pour vos reponses

    j'ai en effet galéré pour trouver la bonne requete et finalement ca donne ca :

    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
     
    		$reponse = $bdd->prepare('SELECT c.ID AS idCategorie, c.categorie, a.ID AS idArticle, a.nom_refined, r.markup_achat
    								  FROM rates r
    								  INNER JOIN
    								  (							  
    									SELECT ID_article, MAX(date_rate) AS date_rate
    									FROM rates
    									GROUP BY ID_article
    								  ) j
    								  ON j.ID_article = r.id_article
    								  AND j.date_rate = r.date_rate
    								  INNER JOIN articles a
    								  ON r.ID_article = a.ID
    								  INNER JOIN categories c
    								  ON a.ID_categorie = c.ID');
    pas evident pour un novice comme moi lol

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/03/2013, 23h50
  2. [RegEx] Recherche du bon pattern pour une expression régulière
    Par erehcab dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2010, 13h06
  3. Réponses: 7
    Dernier message: 18/05/2009, 17h05
  4. Recherche du bon évènement pour un SELECT
    Par PedroBD dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 11/12/2006, 13h17
  5. Réponses: 3
    Dernier message: 09/10/2005, 19h10

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