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 :

comparer des dates


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut comparer des dates
    Bonjour,

    j'ai besoin de sélection toutes les periodes qui ont une péeriode en commun avec la période suivante :

    date_deb et date_fin

    Sachant que les dates saisies par l'internautes dont :

    date1 pour la date de début et

    date2 pour la date de fin

    voilà ce que donne ma requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    	$sqla = sprintf("SELECT A.id_adh, A.id_vil, B.id_vil, B.id_pay, B.ville_fr, C.id_pay, C.id_con, C.pays_fr, D.cont_fr
    			FROM flatforswap_adherent A
    			INNER JOIN flatforswap_ville B ON A.id_vil = B.id_vil
    			INNER JOIN flatforswap_pays C ON B.id_pay = C.id_pay 
    			INNER JOIN flatforswap_continent D ON D.id_con = C.id_con
    			INNER JOIN flatforswap_destination E
    			WHERE (E.date_deb <= '".$date1."' and E.date_fin >= '".$date2."') 
    			OR (E.date_deb >= '".$date1."' and E.date_fin >= '".$date2."')
    			OR (E.date_deb <= '".$date1."' and E.date_fin <= '".$date2."')
    			OR (E.date_deb >= '".$date1."' and E.date_fin <= '".$date2."')
    			limit $start, $epp");}
    Mon souci c'est que ça ne fonctionne pas. Ca me sélectionne des périodes qui ne devrait pas être séléctionnées...

    Une chose important, Le format des dates est le suivant :

    année-mois-jour soit par exemple

    2010-06-01

    Le problème vient peut-être du format. Qu'en pensez-vous ?

  2. #2
    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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Saluton,
    Moi je testerais simplement
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE E.date_deb  BETWEEN $date1 AND  $date2
    			OR  E.date_fin  BETWEEN $date1 AND  $date2
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  3. #3
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut
    Bonjour,

    effectivement ça fonctionne mieux, mais ce n'est pas encore ça.

    Voici ma requête

    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
    16
    17
     
     
    $sqlx = sprintf("SELECT COUNT(*) AS nb_adherents
    			FROM flatforswap_adherent A
    			INNER JOIN flatforswap_ville B ON A.id_vil = B.id_vil
    			INNER JOIN flatforswap_pays C ON B.id_pay = C.id_pay 
    			INNER JOIN flatforswap_continent D ON D.id_con = C.id_con
    			INNER JOIN flatforswap_destination E
    			WHERE (E.date_deb BETWEEN '".$date1."' AND '".$date2."') OR (E.date_fin BETWEEN '".$date1."' AND '".$date2."')");
     
     
    			$reqx = mysql_query($sqlx) or die('Erreur SQL !<br>'.$sqlx.'<br>'.mysql_error());
     
    			// nombre d'enregsitrements
    			$row = mysql_fetch_row($reqx);
     
    			$total = $row[0];
    le souci c'est qu'elle me retourne un nombre très élevé...

    Voilà j'ai un maximum de 50 adhérent et la requête me retourne un nombre de

    1488 !!!

  4. #4
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut
    Il faut peut-être un DISTINCT....

    Qu'en pensez-vous ?

    Mais comment rallier DISTINCT et COUNT(*)... ?

  5. #5
    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 : 73
    Localisation : France, Finistère (Bretagne)

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

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 613
    Par défaut
    Dans tes jointures, il y a un produit cartésien
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN flatforswap_destination E
    puisqu'il n'y a pas de clause ON à cet INNER JOIN
    Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
    articles : Comment émuler un tableau croisé [quasi] dynamique
    et : Une énigme mathématique résolue avec MySQL
    recommande l'utilisation de PDO (PHP5 Data Objects)

  6. #6
    Membre éprouvé
    Inscrit en
    Mars 2004
    Messages
    1 933
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 933
    Par défaut
    heu désolé, mais je n'ai pas tout compris....

Discussions similaires

  1. Comparer des dates en T-SQL
    Par AbyssoS dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 22/03/2006, 16h06
  2. [SQL2K] requête SQL, comparer des dates
    Par cortex024 dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 16/03/2006, 14h32
  3. Réponses: 4
    Dernier message: 31/10/2005, 12h06
  4. Comparer des Dates (Access, jdbc)
    Par babylone7 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 13/07/2005, 10h01
  5. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15

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