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 :

Besoin d'aide pour une requete


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 16
    Par défaut Besoin d'aide pour une requete
    Bonjour,
    Je debute un peu en SQL et j'ai du mal avec une requete :

    J'ai 2 tables : contrat et renouv
    la table contrat contient :
    num_contrat
    type_contrat
    jour_contrat
    mois_contrat

    la table renouv contient:
    num_renouv
    num_contrat
    date_debut
    date fin

    Je voudrais selectionner les contrats qui n'ont pas de renouv apres une date donnée.

    jour_contrat est le jour du renouvellement a faire et mois_contrat est le mois du renouvellement

    par exemple je veux selectionner tous les contrats de type "automatique" dont le periode de renouvellement est entre le 12-02-2011 et le 11-03-2011 qui n'ont pas deja été renouvelé.

    En d'autre terme je veux selectionner les contrats a renouveler sans selectionner ceux qui sont deja renouveler.
    Merci d'avance pour votre aide !

  2. #2
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 16
    Par défaut
    Re !

    Je crois que j'ai trouvé finalement ! enfin, je pense !! corrigez moi si j'me trompe !
    Voila la requete SQL dans du php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_query("SELECT *,c.num_contrat as cnum_contrat
    FROM contrat c
    LEFT OUTER JOIN renouv r ON r.num_contrat=c.num_contrat AND r.date_fin>CONCAT(".date('Y',strtotime('2011-02-12')).",'-',c.mois_contrat,'-',c.jour_contrat)
    WHERE CONCAT(c.mois_contrat,c.jour_contrat)>=".intval(date('md',strtotime('2011-02-12')))." and CONCAT(cc.mois_contrat,c.jour_contrat)<=".intval(date('md',strtotime(('2011-03-11')))."))");

  3. #3
    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
    Comme tu mets SELECT *, la colonne c.num_contrat est déjà présente ; inutile de la répéter. Mais en réalité, il vaut mieux éviter la guerre des étoiles !

    je veux selectionner tous les contrats de type "automatique" dont le periode de renouvellement est entre le 12-02-2011 et le 11-03-2011 qui n'ont pas deja été renouvelé.
    Dans ta requête, tu n'as pas de condition de restriction sur le type de contrat !

    Essaie cette 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
    SELECT les_colonnes_necessaires_et_pas_etoile,
        c.num_contrat AS cnum_contrat
    FROM contrat c
    LEFT OUTER JOIN renouv r 
        ON r.num_contrat = c.num_contrat 
    WHERE c.type_contrat = 'automatique'
        AND STR_TO_DATE(CONCAT('2011-', c.mois_contrat,  '-', c.jour_contrat), '%Y-%m-%d') BETWEEN '2011-02-12' AND '2011-03-11' 
        AND
        (
            r.num_contrat IS NULL
            OR 
            (
                r.date_debut NOT BETWEEN '2011-02-12' AND '2011-03-11'
                AND r.date_fin NOT BETWEEN '2011-02-12' AND '2011-03-11'
            )
        )
    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 !

  4. #4
    Membre averti
    Inscrit en
    Janvier 2011
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 16
    Par défaut
    Pas mal la syntaxe de ta requete ! bcp plus classe que la mienne !!
    Ca marche niquel !! merci bcp CinePhil !

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

Discussions similaires

  1. Besoin d'aide pour une requete
    Par fabris dans le forum Requêtes
    Réponses: 1
    Dernier message: 20/04/2006, 20h15
  2. Besoin d'aide pour une requete SQL
    Par fabris dans le forum Requêtes
    Réponses: 6
    Dernier message: 10/04/2006, 20h27
  3. besoin d'aide pour une requete
    Par Pigoulou dans le forum Requêtes
    Réponses: 2
    Dernier message: 24/02/2006, 20h34
  4. Besoin d'aide pour une requete
    Par Okhotsk dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/11/2005, 16h30
  5. Besoin d'aide pour une requete
    Par jnc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/07/2005, 11h54

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