Partage
  • Partager sur Facebook
  • Partager sur Twitter

Amélioration d'une requete.

Sujet résolu
    31 juillet 2010 à 14:36:03

    Bonjour à tous.

    Je suis en train d'essayer de trouver comment améliorer la requête et également réparé un bug que je rencontre.
    Voici ma base de donnée actuelle.
    CREATE TABLE IF NOT EXISTS `evenement` (
      `id_evenement` int(11) NOT NULL auto_increment,
      `agenda_id` int(11) NOT NULL,
      `objet` varchar(255) collate utf8_unicode_ci NOT NULL,
      `description` longtext collate utf8_unicode_ci NOT NULL,
      `debut` datetime NOT NULL,
      `fin` datetime NOT NULL,
      PRIMARY KEY  (`id_evenement`),
      KEY `agenda_id` (`agenda_id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=69856 ;
    


    La requête ci-dessous permet de vérifier si un rendez-vous est déjà enregistré entre 2 créneaux ou pas.
    <?php
    $requete="SELECT
        count(objet) as nb_objet
      FROM
        evenement e
        LEFT JOIN agenda a ON a.id_agenda = e.agenda_id
      WHERE
        a.user_id = '".$_POST['id_user']."'
        AND (e.debut BETWEEN '".$datedepart."' AND '".$datefin."'
          OR e.fin BETWEEN '".$datedepart."' AND '".$datefin."'
          OR (e.debut<'".$datedepart."' AND e.fin>'".$datefin."')
    )";
    ?>
    


    Cependant elle me pose un tout petit problème.
    Voici un exemple, j'ai un rendez vous qui fini à 9h00. Le suivant commence à 9h15. Jusque là pas de soucis, sauf que lors de la vérification du créneau 9h/9h15, visuellement, il n'y a pas de rendez-vous mais la requete me renvoie qu'il y a bien un rendez vous.
    Comment modifier la requête pour quelle évite ce type de problème?

    Merci d'avance.
    lemirandais

    Résolu

    SELECT COUNT( objet ) AS nb_objet
    FROM evenement e
    LEFT JOIN agenda a ON a.id_agenda = e.agenda_id
    WHERE a.user_id =  '1'
    AND (
    (
    e.debut >  '2010-07-31 09:00:00'
    AND e.debut <  '2010-07-31 11:15:00'
    )
    OR (
    e.fin <  '2010-07-31 09:00:00'
    AND e.fin >  '2010-07-31 11:15:00'
    )
    OR (
    e.debut <  '2010-07-31 09:00:00'
    AND e.fin >  '2010-07-31 11:15:00'
    )
    )
    
    • Partager sur Facebook
    • Partager sur Twitter
    Dommage, impossible de mettre ma signature

    Amélioration d'une requete.

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown