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 :

Extraire les enregistrements ayant un champ identique


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai Avatar de laraki.fissel
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Extraire les enregistrements ayant un champ identique
    Bonjour, et merci d'avance pour votre aide.

    Mon cas est un peu spécial.
    J'ai une table de recherche <tabel1>, contenant les enregistrements à rechercher dans une autre table cible <table2>, cette dernière contient 3 champs (id,date_film,date_creation). J'essaie d'écrire en vain une requête pour extraire depuis la table2 tous les enregistrements identiques à ceux qui existent dans la table1 mais ayant la même date de création.

    voici mon exemple :
    table1(id, date_rech_film), valeurs (1,01/02/2014),(2,01/03/2014) (les dates à rechercher simultanément)
    table2(id, date_film, date_creation) valeurs (10,01/02/2014,25/03/2014),(11,01/02/2014,10/03/2014),(12,01/03/2014,10/03/2014)

    Ma requête doit me faire sortir les deux enregistrements (11,01/02/2014,10/03/2014),(12,01/03/2014,10/03/2014) car les deux dates de la table1 existent et ils ont la même date de création.

    L’existence des deux dates de la table1 avec la même date de création est obligatoire.

    J’espère que j'étais claire dans mon explication, et merci encore pour votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Bonjour,

    Ce que je ne comprends pas, c'est comment est déterminée la date de création ?

    Que donnerait la requête sur ce jeu de données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    T 1
    id	date_rech_film
    1	01/02/2014
    2	01/03/2014
    3	01/04/2014
     
    T2
    id 	date_film	date_creation
    10	01/02/2014	25/03/2014
    11	01/02/2014	10/03/2014
    12	01/03/2014	10/03/2014
    13	01/03/2014	12/03/2014
    14	01/04/2014	12/03/2014
    une réponse vous a permis d'avancer ?

  3. #3
    Membre à l'essai Avatar de laraki.fissel
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 23
    Points
    23
    Par défaut aucun résultat dans ce cas.
    Merci d'avoir répondu,
    dans ce cas, la requête ne doit retourner rien du tout, car la présence du 3 enregistrements de la table T1 est obligatoire dans la table T2 et les 3 dates doivent avoir la même date de création (date_creation) dans T2.

    Merci

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur C++
    Inscrit en
    Avril 2012
    Messages
    771
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 771
    Points : 1 631
    Points
    1 631
    Par défaut
    Je vous avoue ne pas trop comprendre le besoin.

    De ce que j'ai compris pour que la requête retourne un résultat il faut que dans la table 2 toutes les dates de la table 1 soient présente + toutes les date_création doivent être les mêmes.

    Si ce n'est pas ça envoyez une requête SQL que vous avez fait qui se rapproche un peu du résultat escompté.
    une réponse vous a permis d'avancer ?

  5. #5
    Membre à l'essai Avatar de laraki.fissel
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Exactement ça
    C'est exactement le cas, il faut que dans la table 2 toutes les dates de la table 1 soient présentes + toutes les date_création doivent être les mêmes.

    Merci

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT Res.*
    FROM table2 Res
    INNER JOIN (
    	SELECT date_creation
    	FROM Table1 t1
    	INNER JOIN Table2  t2
    		ON t1.date_rech_film = t2.date_film
    	GROUP BY date_creation
    	HAVING COUNT(DISTINCT date_film) = (SELECT COUNT(*) FROM table1)
    )Tmp
    ON tmp.date_creation = Res.date_creation
    INNER JOIN Table1 t
    	ON t.date_rech_film = Res.date_film;

  7. #7
    Membre à l'essai Avatar de laraki.fissel
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Merci
    Bonjour

    Merci bcp aieeeuuuuu, il fonctionne parfaitement, c'est exactement ce que je voulais.

    Merci encore.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 03/07/2012, 17h22
  2. Réponses: 5
    Dernier message: 23/12/2010, 20h12
  3. Réponses: 2
    Dernier message: 23/12/2010, 18h35
  4. suppression de tous les enregistrements ayant deux champs vides
    Par adelsunwind dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 07/04/2009, 17h30
  5. Réponses: 2
    Dernier message: 03/02/2007, 15h35

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