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 :

Clause LIMIT avec une condition


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut Clause LIMIT avec une condition
    Bonjour,

    Je me trouve aujourd'hui devant une problématique qui dépasse mes connaissances :

    J'ai une table avec un champs date.
    Je souhaite faire une requête qui me renvoie tous les enregistrement dont la date est inférieure ou égale à celle d'aujourd'hui. Jusque là ça va je sais faire.

    Je veux aussi limiter le nombre de valeurs retournées à 5 dans certains cas (il semblerai qu'il y ai une cause LIMIT que je peux utiliser, donc c'est bon).

    Là où je bloque c'est que je veux faire intervenir une condition : je renvoie TOUTES les lignes dont la date est aujourd'hui, et si le nombre de ligne est inférieur à 5 je renvoie les lignes d'hier (ou d'avant hier si besoin) pour compléter mon résultat afin d'avoir tout le temps 5 lignes de renvoyées, quelque soit la date.


    Je sais pas si j'ai été suffisamment clair...
    Dans tous les cas je reste à votre disposition.
    Raphaël N.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Le plus simple serait de modifier la condition sur la date :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    WHERE colonne_date <= CURRENT_DATE
    ORDER BY colonne_date DESC
    LIMIT 5
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut
    Dans le cas où j'ai plus de 5 lignes avec la date d'aujourd'hui je ne veux pas de limitation :/ J'ai peut être pas été assez clair dans mes explications.

    Je veux afficher TOUTES les lignes avec currentdate, et si y en a moins de 5 je complète avec les lignes de la journée d'avant.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Tu peux donner la requête complète ?

    Il y aurait beaucoup de données renvoyées par mon WHERE colonne_date <= CURRENT_DATE ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 66
    Par défaut
    Ma table est toute simple :



    Et ma requête pour le moment est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT news, auteur, date, DATE_FORMAT(date, '[%d/%m/%y]') as maDate
    FROM flb_news
    WHERE TO_DAYS(date) <= TO_DAYS(CURDATE())
    ORDER BY date DESC
    Donc comme vous pouvez le voir je n'ai pas encore ajouté la limite vu que je n'ai pas encore trouvé comment mettre la condition. En fait il faudrait quelque chose du genre : LIMIT 5 IF TO_DAYS(date) < TO_DAYS(CURDATE()

    Mais évidement ça n'existe pas :/



    EDIT : Oublié de répondre à ta question. Non il a entre 1 et 10 news par jour uniquement.

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Soyons fous ! Essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SELECT news, auteur, date, DATE_FORMAT(date, '[%d/%m/%y]') AS maDate
    FROM flb_news
    WHERE TO_DAYS(date) <= TO_DAYS(CURDATE())
    ORDER BY date DESC
    CASE
    	WHEN
    	(
    		SELECT COUNT(*)
    		FROM flb_news
    		WHERE TO_DAYS(`date`) = TO_DAYS(CURRENT_DATE)
    	) < 5
    	THEN LIMIT 5
    	ELSE ''
    END
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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 !

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

Discussions similaires

  1. [MySQL] Creer une clause WHERE avec deux conditions donne erreur
    Par Salsaboy60 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/04/2014, 10h39
  2. Problème avec une condition
    Par ghan77 dans le forum Débuter
    Réponses: 2
    Dernier message: 16/12/2005, 16h18
  3. Réponses: 3
    Dernier message: 24/10/2005, 13h47
  4. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56
  5. envoyer submit avec une condition !
    Par delphinote dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 01/07/2005, 15h52

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