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 :

Rechercher des vêtements rouge et bleu !


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut Rechercher des vêtements rouge et bleu !
    Bonjour !

    Je travaille actuellement sur une base de données qui contient des cartes à puce, et chaques cartes à son petit lot d'erreurs.
    J'ai donc une table toute simple:

    numCarte | numErreur

    Chaque carte ayant n erreur.

    Je cherche à retrouver les cartes ayant deux erreurs précises, et je n'arrive pas à tourner ma requête de manière à avoir un tel résultat !
    Je ne peux évidemment pas faire numErreur=erreur1 AND numErreur=erreur2 car numErreur ne contient qu'une seule valeur et ne peut pas en avoir deux différentes !
    Quand à numErreur=erreur1 OR numErreur=erreur2, cela me sort toutes les cartes qui ont erreur1 ou erreur2, mais je ne sais pas si elles ont les deux erreurs ou bien seulement une des deux !

    J'ai bien pensé à concatener les numero d'erreur pour chaque carte mais au final ma base auras quelque chose comme 100 000 enregistrements donc hors de question d'avoir une telle requête ! Enfin, à moins évidemment que ce soit la seule solution...

    Mais j'ose éspérer que SQL offre quelques possibilités pour ce genre de cas, des moyens que je ne connais pas, ou alors auquels je n'ai pas pensé...

    Et comme il est difficile de recherchez une solution à ce problème via gogole ou autre, je me tourne vers vous.

    Existe t-il une solution simple à mon problème ou bien vais-je devoir changer l'architecture de ma base ?

    Junae

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Essayez ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      SELECT numCarte
        FROM <matable>
       WHERE numErreur IN (1, 2)
    GROUP BY numCarte
      HAVING COUNT(distinct numErreur) = 2

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    Merci Waldar pour cette réponse rapide !
    Il faut encore que je débrouille cette requête, histoire que je comprenne bien ce que je fait, mais effectivement ça marche !

    Bon, vu que ma base de données est une base de données Access (ce que je n'avais pas précisé...), le COUNT(DISTINCT numErreur) ne marche pas trop, mais a priori le DISTINCT n'est pas forcément très utile puisque ca marche sans !

    Donc merci beaucoup ! Je vais partir là dessus, dynamisé un peu tout ça en passant par vba, mais mon probème est bien résolu !

    Longue vie à toi !

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Le count "simple" fonctionnera si vous ne pouvez pas avoir de doublons sur le couple (numCarte, numErreur), et si numErreur ne peut pas être null.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2009
    Messages : 3
    Par défaut
    Ok, j'ai compris le requête ! Et c'est normal que le DISTINCT ne me serve pas à grand chose vu que je ne peut pas avoir deux fois la même erreur sur une carte !
    Une dernière fois merci, tu m'as répondu rapidement en me donnant juste la bonne réponse, donc c'est juste parfait !
    Junae

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

Discussions similaires

  1. Recherche des dépendances des modules
    Par slowpoke dans le forum Mandriva / Mageia
    Réponses: 9
    Dernier message: 11/12/2003, 08h49
  2. Priorité de recherche des DLLs
    Par patapetz dans le forum Windows
    Réponses: 3
    Dernier message: 10/09/2003, 18h44
  3. Recherche des exemple d'utilisation
    Par lemme dans le forum Merise
    Réponses: 2
    Dernier message: 26/02/2003, 13h00
  4. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  5. recherches des cours ou des explications sur les algorithmes
    Par Marcus2211 dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 19/05/2002, 22h18

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