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 :

Filtre sur colonne


Sujet :

Requêtes MySQL

  1. #1
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut Filtre sur colonne
    Hello !

    D'habitude je me débrouille pour faire des requêtes qui me retourne le bon résultat mais là je n'y arrive vraiment pas.
    Je souhaite récupérer une valeur bien précise en une seule requête

    malheureusement mon manque de connaissance en SQL me limite fortement :/

    Donc j'ai un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    +----------------------+
    | Titre     | loginId  |
    +----------------------+
    | "ABC"     | 1        |
    +----------------------+
    | "ABC"     | 2        |
    +----------------------+
    | "BCD"     | 2        |
    +----------------------+
    | "BCD"     | 3        |
    +----------------------+
    | "EFG"     | 1        |
    +----------------------+
    Je souhaite simplement récupéré le Titre qui n'est pas associé avec le loginId 1 (ici ça serait "BCD")
    En réalité ma table est un peu plus complexe

    mais rien que ce cas "simple" je n'y arrive pas

    Sauriez vous comment faire ?

    Merci
    i = i++;

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345

  3. #3
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    salut !

    merci pour ta réponse
    en lisant sommairement (je fais des testes avec NOT EXISTS dans 2 minutes :p) il semble que ce soit finalement au moins 2 requêtes imbriquées pour arriver à mes fins ?

    il n'y a donc pas moyen en 1 seul SELECT ?
    i = i++;

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Oui, avec une sous requête.

    Je ne vois pas trop le problème en fait ?

  5. #5
    Membre confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 247
    Points : 473
    Points
    473
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select titre
    from T
    group by titre 
    having sum ( case loginId when 1 then 1 else 0 end) = 0
    te donnera TOUS les titres qui ne sont pas affectés au loginId = 1

  6. #6
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    manque la comparaison sur le libellé

  7. #7
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par punkoff Voir le message
    Oui, avec une sous requête.

    Je ne vois pas trop le problème en fait ?
    Il n'y a pas réellement de problème, je tente juste toujours de faire le minimum de requêtes.

    Jean.Cri1 > Merci faut que je test ça

    punkoff > Que manque-t-il ?

    Je fais un retour sous peu
    i = i++;

  8. #8
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Citation Envoyé par yvesall Voir le message
    punkoff > Que manque-t-il ?
    Rien en fait, j'ai lu trop vite sa requête.
    Elle devrait marcher à merveille.

  9. #9
    Membre habitué
    Avatar de yvesall
    Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2006
    Messages
    208
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2006
    Messages : 208
    Points : 127
    Points
    127
    Par défaut
    Citation Envoyé par Jean.Cri1 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    select titre
    from T
    group by titre 
    having sum ( case loginId when 1 then 1 else 0 end) = 0
    te donnera TOUS les titres qui ne sont pas affectés au loginId = 1
    Et bien après test en effet ça marche !

    Juste une petite rectification, il semblerait que l'espace entre "SUM" et '(' ne doive pas exister pour que la syntaxe soit valide
    c'est à dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT titre
    FROM tableName
    GROUP BY titre 
    HAVING SUM(CASE loginId WHEN 1 THEN 1 ELSE 0 END)=0;
    Puisque je me suis demandé comment cela fonctionnait et que je suppose avoir compris, je me permet d'expliquer en détail aux débutants comme moi :
    (corrigez moi si je me trompe )

    Le HAVING conditionne le résultat de GROUP BY par ce qui le suit.
    Ce qui le suit est un résultat booléen et non une somme puisque le code est
    Notez le "=0" qui transforme le résultat en booléen

    Là où la syntaxe m'a travaillé le plus c'est au niveau du statement CASE
    Cette commande ajoute à la fonction statistique SUM une structure conditionnelle.
    Pour chaque itération du HAVING, le CASE va vérifier si loginID vaut 1 grâce à :
    si c'est le cas, il retourne la valeur 1 qui sera additionnée dans la somme
    grâce à :
    sinon il retourne la valeur 0 ne modifiant pas la somme.
    Le resultat de la somme est comparé à la constante 0 pour retourner un booléen et ainsi valider l’itération du HAVING.


    Merci encore Punkoff et Jean.Cri1 !
    i = i++;

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

Discussions similaires

  1. [SP-2007] WebPart requete de contenu filtre sur colonne Expire
    Par SONY30 dans le forum SharePoint
    Réponses: 1
    Dernier message: 30/08/2010, 12h32
  2. Filtre sur colonne de type "name" + valeur demandée à l'écran
    Par jeanphi45 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 04/03/2010, 16h21
  3. [Vxi3] Filtre sur colonne.
    Par pressdell dans le forum Webi
    Réponses: 6
    Dernier message: 31/07/2009, 01h06
  4. Filtre sur colonne
    Par splog dans le forum Excel
    Réponses: 3
    Dernier message: 31/03/2009, 21h32
  5. Filtre sur colonne
    Par Zabriskir dans le forum IHM
    Réponses: 0
    Dernier message: 05/02/2008, 09h12

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