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

Langage SQL Discussion :

Test sur les enregistrements d'une jointure


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut Test sur les enregistrements d'une jointure
    Bonjour,
    Comment en SQL peut-on tester si tout les enregistrements d'une joiture sont egales à un valeur.

    Exemple:

    Table Dossier:
    Id_Dossier
    Dossier1
    Dossier2

    Table Fichier:
    Id_Fichier Id_Dossier TypeFichier
    Fichier1 Dossier1 TypeWord
    Fichier2 Dossier1 TypeWord
    Fichier3 Dossier1 TypeExcel
    Fichier4 Dossier2 TypeExcel


    Peut-on savoir en SQL si tout les fichiers du Dossier1 sont de TypeWord ?
    Merci.

  2. #2
    Membre éclairé Avatar de Arkhena
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 552
    Points : 769
    Points
    769
    Par défaut
    Bonjour,

    Cette requête sortira tous les fichiers du dossier1 qui ne sont pas de type TypeWord. Est-ce que cela répond à votre question ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Id_Fichier
    FROM Fichier f INNER JOIN Dossier d ON f.id_dossier=f.id_dossier
    WHERE d.id_dossier = 'Dossier1'
      AND TypeFichier<>'TypeWord'
    Cordialement,

    Arkhena

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Merci Arkhena, mais je cherche une requete de genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CASE WHEN (condition: tout les fichiers du dossier sont de type TypeWord ) THEN 'Dossier Word'
    WHEN (condition: tout les fichiers du dossier sont de type TypeExcel ) THEN 'Dossier Excel'

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Pour savoir si un dossier ne contient que des fichiers Word, il faut comparer le nombre de fichiers du dossier au nombre de fichiers Word du dossier.

    Nombre de fichiers par dossier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Id_Dossier, 
    	COUNT(*) AS nb_fichiers
    FROM Fichier
    GROUP BY Id_Dossier
    Nombre de fichiers par dossier et par type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Id_Dossier, TypeFichier,
    	COUNT(*) AS nb_fichiers_par_type
    FROM Fichier
    GROUP BY Id_Dossier, TypeFichier
    Typage de tous les dossiers :
    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
    SELECT t1.Id_Dossier, t1.TypeFichier
    	CASE 
    		WHEN t1.nb_fichiers_par_type = t2.nb_fichiers THEN 'dossier ' || TypeFichier
    		ELSE 'dossier mélangé'
    	END AS type_dossier
    FROM
    (
    	SELECT Id_Dossier, TypeFichier,
    		COUNT(*) AS nb_fichiers_par_type
    	FROM Fichier
    	GROUP BY Id_Dossier, TypeFichier
    ) t1
    INNER JOIN 
    (
    	SELECT Id_Dossier, 
    	COUNT(*) AS nb_fichiers
    	FROM Fichier
    	GROUP BY Id_Dossier
    ) t2 ON t2.Id_Dossier = t1.Id_Dossier

  5. #5
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    En plus compact, en t'appuyant directement sur le nombre de types distincts :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT Id_Dossier, 
               CASE WHEN count(distinct TypeFichier) > 1 THEN 'Mixte'
               ELSE max(TypeFichier)
               END AS type_dossier
    FROM Fichier
    GROUP BY Id_Dossier

  6. #6
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Bien vu Pacmann, je n'y avais pas pensé !

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 19
    Points : 22
    Points
    22
    Par défaut
    Merci CinePhil et Pacmann
    Les deux reponses resolvent mon problème.

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

Discussions similaires

  1. [MySQL-5.6] TRIGGER avec test sur les minute d'une date
    Par Squale76 dans le forum Requêtes
    Réponses: 1
    Dernier message: 28/01/2015, 16h41
  2. [WD19] calculs sur les enregistrements d'une rupture dans un état
    Par elscorpio dans le forum WinDev
    Réponses: 3
    Dernier message: 14/11/2014, 14h19
  3. Test unitaire sur les vue d'une base de données
    Par bragon dans le forum Tests et Performance
    Réponses: 4
    Dernier message: 04/02/2009, 12h29
  4. Réponses: 5
    Dernier message: 29/08/2008, 11h48
  5. Réponses: 7
    Dernier message: 30/05/2006, 11h00

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