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 :

Requete WHERE Date inférieure à - 30 jours


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut Requete WHERE Date inférieure à - 30 jours
    Bonjour à tous,

    J'ai trouvé des résultats à mon problème mais je n'arrive pas à le mettre en place.

    Je cherche donc à faire une requete, ou mon WHERE ne prend en compte que les dates inférieures de 30 jours à ma Date_Relance.

    Voici ce que j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $madate= date('d-m-Y', strtotime('-30 day'));
    Mais ça ne marche pas !

    Voici ma requète :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $relance="SELECT MM_Entreprise.NumEntreprise, MM_Entreprise.NomEntreprise, MM_Entreprise.ContactEntreprise, MM_Entreprise.AdresseEntreprise, MM_Entreprise.VilleEntreprise, MM_Entreprise.Tel1Entreprise, MM_Relance.DateRelance FROM MM_Entreprise, MM_Relance WHERE MM_Relance.NumEntreprise=MM_Entreprise.NumEntreprise AND MM_Relance.DateRelance=$madate";
    P.S. Date _Relance est au format DATE dans ma BDD (YYYY-MM-DD)

    Merci pour votre 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
    Directement en SQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AND MM_Relance.DateRelance > DATE_SUB(CURDATE(), 30 DAY)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Directement en SQL :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AND MM_Relance.DateRelance > DATE_SUB(CURDATE(), 30 DAY)
    ça doit être incompatible avec ma version de MYSSQL ?

    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 '30 DAY)' 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
    il manque un mot
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    AND MM_Relance.DateRelance > DATE_SUB(CURDATE(), interval 30 DAY)
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Merci beaucoup sabotage, ça fonctionne parfaitement.

  6. #6
    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
    Fiou si j'ai tout bon du premier coup ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.NumEntreprise, e.NomEntreprise, e.ContactEntreprise, e.AdresseEntreprise, e.VilleEntreprise, e.Tel1Entreprise, MAX(r.DateRelance)
    FROM MM_Entreprise AS e 
    LEFT JOIN 
    (SELECT MAX(DateRelance) FROM MM_Relance WHERE DateRelance < DATE_SUB(CURDATE(), interval 30 DAY) GROUP BY NomEntreprise) AS r 
    ON r.NumEntreprise=e.NumEntreprise
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Fiou si j'ai tout bon du premier coup ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT e.NumEntreprise, e.NomEntreprise, e.ContactEntreprise, e.AdresseEntreprise, e.VilleEntreprise, e.Tel1Entreprise, MAX(r.DateRelance)
    FROM MM_Entreprise AS e 
    LEFT JOIN 
    (SELECT MAX(DateRelance) FROM MM_Relance WHERE DateRelance < DATE_SUB(CURDATE(), interval 30 DAY) GROUP BY NomEntreprise) AS r 
    ON r.NumEntreprise=e.NumEntreprise
    Une petite erreur, quand même !

    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 'SELECT MAX(DateRelance) FROM MM_Relance WHERE DateRelance < DAT
    Je me suis peut-être mal expliqué...

    Ce que je souhaite c'est donc extraire toutes les données ou la DateRelance est inférieure à la date du jour - 1 mois.

    Par contre dans le résultat de ma requete, je ne veux qu'un seul résultat par entreprise (celui où DateRelance est le plus récent).

    C'est pas facile à expliquer !!

    Et si possible afficher que 10 résultats (avec LIMIT 10), et pris aléatoirement à chaque actualisation de la requète. Merci

  8. #8
    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
    J'avais bien compris ton explication.
    Cependant je ne vois pas l'erreur de syntaxe qu'il peut y avoir ; d'avoir chez moi il ne semble pas y avoir d'erreur.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    Citation Envoyé par sabotage Voir le message
    J'avais bien compris ton explication.
    Cependant je ne vois pas l'erreur de syntaxe qu'il peut y avoir ; d'avoir chez moi il ne semble pas y avoir d'erreur.
    OK, bon si j'essaye pas à pas.

    1°) Requete qui selectionne la date max pour chaque entreprise = OK
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT `NumEntreprise`, MAX(`DateRelance`) FROM `MM_Relance` GROUP BY `NumEntreprise`
    Cette requete fonctionne trés bien dan PhpMyAdmin, mais via mon site elle ne m'affiche pas les dates.

    Avez vous une idée ???

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 407
    Par défaut
    J'essaye de faire une requête mais je n'y arrive pas.

    Je voudrais afficher un tableau où, il y aurait par ligne :
     NumRelance
     DateRelance (datre de la relance la plus récente pour l’entreprise concernée)

     NomEntreprise
     ContactEntreprise
     Adresse Entreprise
     VilleEntreprise
     Tel1Entreprise

    - ET où ne s’affiche seulement les entreprises où la date de relance (DateRelance) la plus récente est inférieur à J-30 par rapport à la date du jour.
    - ET ne s’affiche que 10 résultats, pris aléatoirement dans les résultats



    Voici mes tables.

    MM_Entreprise
    NumEntreprise
    NomEntreprise
    ContactEntreprise
    AdresseEntreprise
    CompAdresseEntreprise
    CPEntreprise
    VilleEntreprise
    Tel1Entreprise
    Tel2Entreprise
    Tel3Entreprise
    Mail1Entreprise
    Mail2Entreprise


    MM_Relance
    NumRelance
    DateRelance
    NumEntreprise
    CommentaireRelance

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DISTINCT MM_Relance.NumEntreprise, DateRelance, NomEntreprise, FROM MM_Relance INNER JOIN MM_Entreprise ON MM_Relance.NumEntreprise=MM_Entreprise.NumEntreprise GROUP BY NumEntreprise
    Il va m'afficher comme résultat :

    MM_Relance MM_Entreprise
    ------------ ---------------
    NumEntreprise Date Relance NomEntreprise
    00003 2010-01-03 CARREFOUR
    00004 2009-12-31 INTERMARCHE

    Pourquoi va t'il choisir, pour CARREFOUR, la date la plus ancienne ?
    Et comment pour qu'il m'affiche se même résultat, mais avec la date la plus récente ?

    Merci beaucoup pour votre aide.

    J'ai essayé beaucoup de choses. !

Discussions similaires

  1. [MySQL] Requete SQL Date 3 derniers jours.
    Par iMax92 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/03/2013, 17h33
  2. Requete WHERE date= ?
    Par mikael2235 dans le forum Requêtes
    Réponses: 11
    Dernier message: 21/09/2011, 11h18
  3. Récuperer toute les dates inférieures à 2 jours
    Par mrsoyer dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/08/2008, 14h02
  4. requete avec where..date du jour
    Par hermine dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 08/08/2007, 10h30
  5. requête avec date inférieure à 30 jours
    Par bouba_95 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 30/01/2007, 21h03

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