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

Requêtes MySQL Discussion :

Probleme avec une requete sql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Par défaut Probleme avec une requete sql
    Bonjour,

    j'essaye de faire une requete SQL mais je n'arrrive pas à la trouver. Voila mon probleme :

    Une table avec 2 champs sid(int) et cid(int)
    ---------
    sid | cid |
    ---------
    1 | 204 |
    ---------
    1 | 209 |
    ---------
    2 | 105 |
    ---------
    3 | 204 |
    ---------
    3 | 209 |
    ---------
    Mon but est de récupérer les sid qui ont pour cid 204 et 209(etc) donc dans ce cas le sid 1 et 3

    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    SELECT
      DISTINCT sid
    WHERE
      cid in (204,209)
    ;

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Par défaut
    Ca serait trop simple si c'etait ça et le IN fait un OR et non un AND

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT sid
    FROM la_table
    WHERE cid = 204
     AND sid in (SELECT sid FROM la_table WHERE cid = 209)

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Février 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 10
    Par défaut
    En effet, cette solution fonctionne mais si je dois faire une recherche dans plus de 15 cid(ce qui va arriver souvent), je vais avoir une requete tres longue et donc tres lente. Mais d'un coté, je ne vois pas d'autres solutions

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 67
    Par défaut
    Citation Envoyé par kraven30 Voir le message
    Ca serait trop simple si c'etait ça et le IN fait un OR et non un AND
    Au temps pour moi, j'ai lu ton message un peu trop vite.

    Une idée peut-être un peu plus élégante serait alors celle-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT
      sid,
      count(*)
    FROM
      la_table
    WHERE
      cid in (204, 209)
    GROUP BY
      sid
    HAVING
      COUNT(*)=2
    ;
    (A vérifier pour la syntaxe du HAVING que je n'utilise que rarement)

    Si ta requête est générée dynamiquement par un script il y a un moyen de l'écrire en utilisant d'un côté le tableau de cid et de l'autre la taille de celui-ci.

  7. #7
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    je pense que ceci devrait marcher...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT sid
    FROM t as t1 
     INNER JOIN t as t2 ON t1.sid= t2.sid
     INNER JOIN t as t3 ON t1.sid= t3.sid
    WHERE 
      t1.cid = :value1 AND 
      t2.cid = :value2 AND
      t3.cid = :value3

  8. #8
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    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 814
    Billets dans le blog
    14
    Par défaut
    La requête avec HAVING de NicoD est la bonne.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

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

Discussions similaires

  1. [XL-2010] Probleme avec une requete SQL
    Par efo007 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 08/04/2014, 08h30
  2. probleme avec une requete SQL
    Par univermina dans le forum ASP
    Réponses: 20
    Dernier message: 07/06/2009, 22h24
  3. Probleme avec une requete sql dans VB6 pour un champ date
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2009, 08h31
  4. probleme avec une requete sql
    Par kroma23 dans le forum Bases de données
    Réponses: 18
    Dernier message: 10/01/2009, 14h28

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