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 :

Pb requete sur 2 tables


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Pb requete sur 2 tables
    Bonjour,

    svp pouvez vous m'aider à solutionner mon pb, je ne sais pas quelle requete ecrire.

    voila, j'ai une table A:

    num | couleur
    1 bleu
    1 rouge
    1 vert
    2 violet
    3 gris
    3 gris

    et une table B :

    num | couleur
    1 bleu
    2 jaune
    3 gris

    en executant une rq, j'aimerais avoir le resultat suivant :

    num | estDiffEntreAetB
    1 oui (car dans table A , 1 a les couleurs rouge et vert)
    2 oui (car 2 a ds table A violet <> tableB jaune)
    3 non

    merci

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Dans ton exemple, pour la valeur 3 tu ne devrais pas avoir 'oui' (car 'gris' dans la table A correspond à 'gris' dans la table B pour 1) ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  3. #3
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Si j'ai bien compris, il faut les lignes de B pour lesquels il existe une ligne dans A pour ne même Num, mais une couleur différente, c'est bien cela ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT b.Num, b.Couleur
    FROM table_B b
    WHERE EXISTS (SELECT NULL FROM table_A WHERE a.Num = b.Num AND a.Couleur <> b.Couleur)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Médiat : tu as compris la question avant moi mais si je peux me permettre panini182 cherches à retourner des n-upplets avec 'oui' / 'non' au lieu de la couleur.

    Donc si j'ai supposé correctement alors il suffit d'ajouter à ta solution un CASE...WHEN.
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Médiat : c'est même pire que ça parce que ton exemple actuel ne dois rien retourner pour num = 3 ?
    Modérateur des forums Oracle et Langage SQL
    Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum

  6. #6
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Magnus : tu as raison, je propose (non equi-jointure externe non testée)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT b.Num, CASE WHEN MAX(a.Couleur) = NULL THEN 'Non' 
                       ELSE 'Oui' END AS A_est_different_B
    FROM table_B b LEFT OUTER JOIN table_A a ON (a.Num = b.Num AND a.Couleur <> b.Couleur)
    GROUP BY b.Num
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  7. #7
    Futur Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    ok merci!

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

Discussions similaires

  1. requete sur 2 table (pas si simple)
    Par Sebou San dans le forum Requêtes
    Réponses: 7
    Dernier message: 29/11/2005, 14h08
  2. besoin d'aide -> requete sur 2 tables avec count()
    Par parksto dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/10/2005, 19h06
  3. requete sur 2 tables mysql
    Par PAYASS59 dans le forum Requêtes
    Réponses: 3
    Dernier message: 19/09/2005, 11h48
  4. Requete sur deux tables
    Par ReaseT dans le forum ASP
    Réponses: 13
    Dernier message: 07/02/2005, 16h18
  5. [MS-SQL]requete sur 3 tables
    Par pascalT dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 30/04/2003, 11h24

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