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 :

Problème lié à une date de validité [MySQL-5.7]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut Problème lié à une date de validité
    Bonjour à tous

    Je suis confronté à un problème et je sais pas comment le résoudre à partir d'une requête je m'explique :

    j'ai deux tables personnes et fiches, En effet chaque personne a une fiche et cette fiche a une date de validité.

    La date de validité est de 3 ans. Cette date est calculée à partir de la date de la fiche qui est la date du jour :
    Exemple : date_fiche = 01/12/2020 ----> validite_fiche = 01/12/2023

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    --
    -- Structure de la table `personnes`
    --
     
    DROP TABLE IF EXISTS `personnes`;
    CREATE TABLE IF NOT EXISTS `personnes` (
      `id` bigint(11) NOT NULL AUTO_INCREMENT,
      `nom` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
      `prenoms` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL,
    PRIMARY KEY (`id`)) 
    ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
     
    --
    -- Structure de la table `fiches`
    --
     
    DROP TABLE IF EXISTS `fiches`;
    CREATE TABLE IF NOT EXISTS `fiches` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `typefiche` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL,
      `date_fiche` date NOT NULL,
      `validite_fiche` date NOT NULL
      PRIMARY KEY (`id`),
      KEY `fk_personnes` (`fk_personnes`)
    ) ENGINE=MyISAM AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    Maintenant voici ce que je recherche à ressortir :

    1- Lister pour chaque personne
    -le nom,
    -le prénoms ,
    -le numéro de fiche
    -temps restant en fonction de la date de validité

    2- A une date donnée Lister
    les fiches dont le temps de restant est égale ou supérieur a un 1 ans !

    Merci d'avance pour votre aide et vos lumières

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    A la lecture de la structure des tables, je ne comprends pas comment tu relies les fiches et les personnes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    Bonjour

    KEY `fk_personnes` (`fk_personnes`) clé étrangère venant de la table personne

    Merci

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 622
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par devalender Voir le message
    KEY `fk_personnes` (`fk_personnes`) clé étrangère venant de la table personne
    C'est insuffisant, cette définition ne définit pas une contrainte vers une colonne d'une autre table.
    La syntaxe correcte est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONSTRAINT nom_de_la_contrainte FOREIGN KEY (nom_de_la_colonne) REFERENCES nom_de_l'autre_table(nom_de_sa_colonne)
    Et il faut une colonne du même type et de la même longueur dans la deuxième table

  5. #5
    Membre éprouvé
    Homme Profil pro
    Benevole
    Inscrit en
    Mai 2004
    Messages
    1 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Benevole
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 720
    Par défaut
    Autant pour moi, ca été omis lors de la copie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE `fiches` (
      `id` int NOT NULL,
      `typefiche` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
       `date_fiche` date,
      `validite_fiche` date NOT NULL,
      `fk_personnes` int NOT NULL,
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    
    CONSTRAINT fk_personne FOREIGN KEY (fk_personnes) REFERENCES personnes(id)


    Merci

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 622
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 622
    Billets dans le blog
    10
    Par défaut
    pour calculer un écart entre deux dates, on peut utiliser DATEDIFF()
    pour ajouter un nombre d'années à une date, on peut utiliser DATE_ADD()

    Donc, il suffit d'ajouter 3 ans à la date initiale pour obtenir la date de fin, puis, de calculer l'écart (DATEDIFF()) entre la date d'aujourd'hui (CURDATE()) et cette date de fin (DATE_ADD(date_fiche, INTERVAL 3 YEAR);


    Exemple : SELECT DATEDIFF(curdate(), date_add(DATE_FICHE, interval 3 year));.

    Attention à bien tester le signe de l'écart (les 3 ans pouvant être déjà révolus )

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

Discussions similaires

  1. [DF] Gestion d'articles avec une date de validité
    Par Ponset dans le forum Schéma
    Réponses: 4
    Dernier message: 11/04/2011, 15h32
  2. [AC-2007] Problème convertir une date en texte
    Par christophe31 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/04/2010, 14h51
  3. probléme avec une date
    Par Bricoltou dans le forum Excel
    Réponses: 4
    Dernier message: 10/01/2010, 12h38
  4. Problème avec une date !!
    Par pilz dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/04/2006, 11h35
  5. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30

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