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 :

Pb requête select avec 2 dates


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut Pb requête select avec 2 dates
    Bonjour,
    j'ai un petit souci pour une requete select. Je vous fais un petit topo avant :
    J'ai une table principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    TABLE EVENEMENTS :
     
    id ......................bigint
    titre_evt..............varchar
    descr_evt..............varchar
    lieu_evt...............varchar
    adr_evt.................varchar
    id_ville................bigint
    categ_evt..............varchar
    tarif_evt..............varchar
    date_enreg_evt.........date
    date_debut_evt.........date
    date_fin_evt..........date
    pour précision, la date_debut_evt est la date de l'evenement (s'il se passe sur 1 seule journée), sinon c'est la date de debut (et date_fin_evt est la date de fin) si l'evenement se passe sur plusieurs jours (festivals par exemple)

    Et c'est là le problème : il peut y avoir des evenements avec seulement une date de debut, et d'autres avec une date de fin aussi.

    Et ce que je voudrais c'est arriver à faire un select par exemple de tous les evenements dans la categorie 'concert' dont la date (si evt sur 1 jour) est >= à date du jour ou (si plusieurs jours) que la date de fin et/ou date debut soit >= à date du jour...

    j'espere que je suis assez clair
    Merci d'avance

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 059
    Par défaut
    Bonjour,

    Eh bien, pour faire ça, tu mets dans la condition WHERE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... WHERE COALESCE (date_fin_evt, date_debut_evt) >= CURDATE()
    Petite explication : la fonction COALESCE renvoit le premier de ses arguments qui n'est pas NULL. Donc, si un évènement a une date de fin, c'est elle que tu veux tester par rapport à la date du jour (ça n'est pas la peine de tester la date de début qui est antérieure). Donc, la fonction ci-dessus testera la date de fin.
    Et si il n'y a pas de date de fin, c'est la date de début qui sera testée .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  3. #3
    Membre éclairé Avatar de lolymeupy
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2006
    Messages : 402
    Par défaut
    Merci beaucoup Ced...
    Par contre, c'est pas tout à fait ce qu'il me faut parce que quand je n'ai pas de date de fin, j'ai 0000-00-00 par defaut dans la date de fin...
    Resultat, avec cette fonction il ne me prend que les evenements qui ont une date de début et une date de fin...

    Mais j'ai réussi en "bidouillant " la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     SELECT e.id, e.titre_evt, e.descr_evt, e.lieu_evt, e.adr_evt, v.nom_ville, z.zone, e.categ_evt, e.tarif_evt, e.date_enreg_evt, e.date_debut_evt, e.date_fin_evt, e.contact_evt, e.nom_photo
    FROM evenements e
    INNER JOIN ville v ON e.id_ville = v.id
    INNER JOIN zoneville z ON v.id_zone = z.id
    WHERE e.categ_evt = 'concert'
    AND (
    e.date_debut_evt >= CURDATE( )
    OR e.date_fin_evt >= CURDATE( )
    )
    order by e.date_debut_evt ASC LIMIT 0 , 80
    et je récupère bien tous mes enreg. concernés...

    ( merci encore Ced )

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

Discussions similaires

  1. requête selection avec format de date
    Par in-extremis dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 19/12/2012, 15h26
  2. Réponses: 4
    Dernier message: 02/08/2006, 08h42
  3. Requête SELECT avec deux champs dans une colonne ??
    Par fredhali2000 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 08/06/2006, 10h41
  4. Requête selection avec une variable de date
    Par kahmsin dans le forum Access
    Réponses: 7
    Dernier message: 20/11/2005, 19h38
  5. [Débutant] Requête SELECT avec max et sous-requête
    Par joefou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 27/07/2005, 14h28

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