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 recherche dans une table


Sujet :

Langage SQL

  1. #1
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut Problème de recherche dans une table
    Bonjour,

    j'ai une table MATABLE qui se présente comme suit:

    Nom - Code1 - Code2
    A - 123 - 456
    A - 597 - 654
    B - 123 - 456
    B - 597 - 654
    Je voudrais récupérer tous les champs Nom dont les codes sont identiques:

    je fais cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT Nom From MATABLE
    WHERE Code1 = "123" AND Code2 = "456"
    AND Code1 = "597" AND Code2 = "654"
    Cette requête devrait me renvoyer les noms A et B

    Mais elle ne renvoie rien.

    Qu'est ce qui ne va pas dans ma requête?

    Merci de votre aide

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Bonjour.

    Vous n'avez rien, et c'est normal. Comment voulez-vous que code1 soit à la fois égal à 123 et à 597?

    Je suppose que vous vouliez écrire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT nom
      FROM matable
     WHERE (code1 = "123" AND code2 = "456") OR (code1 = "597" AND code2 = "654")

  3. #3
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    Merci pour la réponse.
    Toutefois, j'ai déjà testé cette requête, et elle me renvoie plus d'enregistrement que prévus.

    Par exemple, si on a ceci:
    Nom - Code1 - Code2
    A - 123 - 456
    A - 597 - 654
    B - 123 - 456
    B - 597 - 654
    C - 123 - 456
    C - 444 - 777
    la requete me renvoi aussi C (que je ne veux pas)

  4. #4
    Membre confirmé

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    507
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 507
    Points : 503
    Points
    503
    Par défaut
    Ok. Je n'avais pas compris vos besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.nom, t1.code1, t1.code2
      FROM matable t1, matable t2
     WHERE t1.code1 = t2.code1
         AND t1.code2 = t2.code2
         AND t1.nom <> t2.nom

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Pour ne pas avoir C, vous pouvez faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom
      FROM matable
     WHERE (code1 = "123" AND code2 = "456") 
    OR (code1 = "597" AND code2 = "654")
    group by nom
    having count(code1) = 2
    Le dernier 2 étant le nombre de couples de code que vous recherchez.

  6. #6
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par Az2000 Voir le message
    Pour ne pas avoir C, vous pouvez faire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT nom
      FROM matable
     WHERE (code1 = "123" AND code2 = "456") 
    OR (code1 = "597" AND code2 = "654")
    group by nom
    having count(code1) = 2
    Le dernier 2 étant le nombre de couples de code que vous recherchez.
    cette requête ne fonctionne pas. Je n'ai pas les résultats voulus

  7. #7
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par GoLDoZ Voir le message
    Ok. Je n'avais pas compris vos besoins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT t1.nom, t1.code1, t1.code2
      FROM matable t1, matable t2
     WHERE t1.code1 = t2.code1
         AND t1.code2 = t2.code2
         AND t1.nom <> t2.nom
    que sont t1 et t2?

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    t1 et t2 sont 2 alias de matable.

    Je viens d'essayer ma requête sous SQL Server, et avec vos données, j'obtiens bien A et B.

  9. #9
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par Az2000 Voir le message
    Je viens d'essayer ma requête sous SQL Server, et avec vos données, j'obtiens bien A et B.
    Le problème, c'est que quand je l'adapte à ma table, ça ne marche plus.

    Je te donne ma requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT NOKTCODPF, NOKTCOMPF  FROM NOMENC 
    WHERE (NOCTCODECP = 'T005' AND NOCTCOMCPT = '') 
    OR (NOCTCODECP = 'W001' AND NOCTCOMCPT = '5017') 
    OR (NOCTCODECP = 'WKB1118T' AND NOCTCOMCPT = '5017') 
    OR (NOCTCODECP = 'X006' AND NOCTCOMCPT = '5017') 
    OR (NOCTCODECP = 'A450' AND NOCTCOMCPT = 'T007') 
    OR (NOCTCODECP = '211133' AND NOCTCOMCPT = '') 
    GROUP BY NOKTCODPF, NOKTCOMPF Having Count(NOCTCODECP) = 6

  10. #10
    Membre éclairé
    Avatar de Asdorve
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 336
    Points : 718
    Points
    718
    Par défaut
    c'est bon, j'avais oublié un petit truc, la requête précédente est bonne,

    merci à tous de votre aide.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/03/2011, 21h36
  2. [AC-2007] Probléme de boucle recherchant dans une table
    Par amartik dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/04/2010, 17h27
  3. Problème de dépendances dans une table
    Par PrinceMaster77 dans le forum Outils
    Réponses: 1
    Dernier message: 22/11/2004, 12h39
  4. recherche dans une table Access en ASP
    Par D-D dans le forum ASP
    Réponses: 3
    Dernier message: 09/06/2004, 10h12
  5. Problème de recherche dans une BD
    Par ledevelopeur dans le forum Bases de données
    Réponses: 5
    Dernier message: 28/04/2004, 09h49

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