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 :

Requête de disponibilité


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Requête de disponibilité
    Bonjour,
    Je rencontre un souci sur une requête.
    J'ai fait une vue qui me donne une liste de users qui ont des RDV d'autres qui n'en n'ont pas et ceci pour une tranche horaire donnée. Je dois trouver le premier user qui a de la dispo à une date donnée et une tranche horaire donnée.
    Sachant que si la date proposée n'a jamais été choisie auparavant, il y a forcément de la dispo, ou alors si la date choisie a déjà des RDV pour des users, je dois vérifier que le nb de RDV est inférieur à 4 pour la tranche horaire choisie et pour le user en question. En résumé : je dois trouver l'id du user qui pour une date choisie et un horaire choisie a moins de 4 RDV.

    Voici la structure de ma vue

    user_id date_rdv nb_rdv horaire_id
    ==============================================
    865 null null null
    1029 null null null
    1030 2008-04-17 4 1
    1099 2008-03-31 2 2
    902 2008-03-28 4 3
    869 2008-03-11 1 1
    Donc si par exemple on me propose un RDV pour la tranche horaire 3
    pour le 2008-03-28, mon user 902 en a déjà 4 donc je ne peux plus le choisir,
    par contre je peux en choisir d'autres qui n'ont soit aucun RDV à cette date, ou un nombre de RDV < 4 pour cette même date.
    D'avance merci pour votre aide

  2. #2
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    à tester
    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT user_id 
    FROM mavue
    WHERE 
    (date = \"${tadate}\"
    AND horaire_id = \"${tonhoraire}\"
    AND nb_rdv < 4)
    OR date <> \"${tadate}\";

  3. #3
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Merci pour votre réponse,
    mais ce n'est pas ce que je recherche, je me suis fait sûrement mal comprendre. En fait je ne trouve pas la syntaxe de mon idée, je ne sais pas si vous la connaissez. Cela serait du style :
    je teste si la date existe déjà dans la liste des RDV, si elle n'existe pas, je prend le premier user que je trouve (je ferai plus tard un script pour le choisir aléatoirement, à moins qu'il existe une instruction SQL directement pour le faire lors du SELECT), si la date existe, je prend le user dont le nb_rdv pour cette date et pour cette tranche_horaire, qui a le nb_rdv le plus petit.
    Mais je ne vois pas comment faire au niveau de la syntaxe SQL, auriez-vous une idée sur la syntaxe à adopter ?
    D'avance merci.

  4. #4
    Membre chevronné Avatar de SphynXz
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 439
    Par défaut
    Code MySQL : 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
     
    SELECT ifnull(
                             (
                             SELECT user_id
                             FROM tatable
                             WHERE date = \"${madate}\" 
                             AND nb_rdv < 4 
                             AND horaire_id = \"${monhoraire}\"
                             )
                      ,
                             (
                             SELECT user_id
                             FROM tatable
                             ORDER BY rand( )
                             LIMIT 1 )
                      ) ;

  5. #5
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut
    Merci SphynXz pour votre réponse, elle fonctionne super bien.

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

Discussions similaires

  1. Requête période disponibilité pour réservation
    Par avairet dans le forum Langage SQL
    Réponses: 18
    Dernier message: 22/03/2012, 16h43
  2. Requête disponibilités de membres
    Par ekael dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/12/2008, 19h01
  3. Requête tranche horaire disponibilité
    Par jeremie74 dans le forum Requêtes
    Réponses: 8
    Dernier message: 25/07/2006, 16h08
  4. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  5. [BDD] Enregistrer le résultat d'une requête
    Par Mowgly dans le forum C++Builder
    Réponses: 5
    Dernier message: 19/06/2002, 15h26

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