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 :

Problème de requete SQL


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Par défaut Problème de requete SQL
    Bonjour, J'ai un problème de requête (comme vous pouvez vous en douter :p)

    Je dispose de 3 tables

    Table A
    -------
    NOM
    -------
    NOM 1
    NOM 2
    NOM 3

    TABLE B
    -------
    TYPE
    -------
    TYPE 1
    TYPE 2
    TYPE 3


    et une troisième table qui est une table de jointure entre ces deux tables (relation n-n)

    TABLE C
    --------------
    NOM TYPE
    --------------
    NOM 1 TYPE 1
    NOM 2 TYPE 1
    NOM 2 TYPE 2

    Ce que je souhaite obtenir est un résultat sur 2 colonnes:
    Pour un Nom donné de la table A
    la première colonne contient tout les types de la table B et la seconde colonne m'indique si oui ou non le type est présent dans la table C.


    Exemple:
    --------

    Pour Nom 1:

    Résultat
    -----------
    Type 1 oui
    Type 2 non
    Type 3 non


    Pour Nom 2:

    Résultat
    ------------
    Type 1 oui
    Type 2 oui
    Type 3 non


    (J'ai bien conscience, que je n'ai pas besoin d'utiliser la table A, je la présente juste pour info)

    Voilà, en espérant que ma question est claire et que l'un d'entre vous pourra m'éclaircir.

    D'avance merci.

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    Salut,
    Voici un example de requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT *
    FROM (
    	SELECT a.NOM,b.TYPE,'oui' AS RESULTAT FROM TABLEA a, TABLEB b WHERE EXISTS (SELECT 1 FROM TABLEC c WHERE a.NOM=c.NOM AND b.TYPE=c.TYPE)
    	UNION ALL
    	SELECT a.NOM,b.TYPE,'nom' AS RESULTAT FROM TABLEA a, TABLEB b WHERE NOT EXISTS (SELECT 1 FROM TABLEC c WHERE a.NOM=c.NOM AND b.TYPE=c.TYPE)
    	)
    ORDER BY NOM,TYPE
    Note: j'ai tout mis dans une sous requete pour pouvoir ordonner, mais c'est pas obligatoire...

    ---
    Farid

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Par défaut
    D'abord, merci pour la rapidité de ta réponse Farid, mais le problème persiste

    Je suis sous Interbase Firebird et cet oiseau la semble ne pas gérer les sous-requêtes

    Aurais-tu une autre solution à mon problème en une seule requête si possible


    Xristof

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    ahhh..
    hum...
    et la requete suivante marche ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT a.NOM,b.TYPE,'oui' AS RESULTAT FROM TABLEA a, TABLEB b WHERE EXISTS (SELECT 1 FROM TABLEC c WHERE a.NOM=c.NOM AND b.TYPE=c.TYPE)
    UNION ALL
    SELECT a.NOM,b.TYPE,'nom' AS RESULTAT FROM TABLEA a, TABLEB b WHERE NOT EXISTS (SELECT 1 FROM TABLEC c WHERE a.NOM=c.NOM AND b.TYPE=c.TYPE)
    ---
    Farid

  5. #5
    Membre averti
    Inscrit en
    Février 2009
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 16
    Par défaut
    Alors...

    Ce coup-ci la requête compile c'est un bon point
    Mais elle me ramène un peu trop de résultat, Il me faudrait les résultat pour un Nom donné comme je l'explique dans mes exemples


    En fait, je viens de trouver réponse à cette question

    Et bien, un grand merci à toi

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    280
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 280
    Par défaut
    voila, il suffit de remplacer TOTO par le nom que tu veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT a.NOM,b.TYPE,'oui' AS RESULTAT 
    FROM TABLEA a, TABLEB b 
    WHERE a.NOM='TOTO' AND EXISTS (SELECT 1 FROM TABLEC c WHERE c.NOM AND b.TYPE=c.TYPE)
    UNION ALL
    SELECT a.NOM,b.TYPE,'non' AS RESULTAT 
    FROM TABLEA a, TABLEB b 
    WHERE a.NOM='TOTO' AND NOT EXISTS (SELECT 1 FROM TABLEC c WHERE a.NOM=c.NOM AND b.TYPE=c.TYPE)
    ---
    Farid

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

Discussions similaires

  1. Problème avec requete SQL/type NumAuto
    Par Mimisio dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/07/2007, 11h56
  2. problème lancement requete sql
    Par skanderb dans le forum JSF
    Réponses: 4
    Dernier message: 02/05/2007, 16h46
  3. [WD 11] problème de requete SQL-LIKE
    Par fabpeden dans le forum WinDev
    Réponses: 5
    Dernier message: 24/04/2007, 17h07
  4. problème de requete SQL et recherche
    Par franfr57 dans le forum ASP
    Réponses: 1
    Dernier message: 16/03/2006, 13h33
  5. [ACCESS][SQL] Problème avec requete SQL ...
    Par mpascolo dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 09/11/2005, 10h54

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