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 :

IF AND dans un select


Sujet :

Requêtes MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut IF AND dans un select
    Bonjour à tous,

    j'essaie de faire un count mais selon une condition; la seul condition que je n'arrive pas intégrer c'est si le nom d'université égal à Paris et le département est (Info, Anglais) alors ne pas prendre en considération

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT count(univ.name),univ.etat
     
    FROM univ
     
    WHERE 
     
    univ.departement NOT IN ('info','anglais')
     
    GROUP BY univ.name,univ.etat
    sauf que je veux appliqué ma condition juste pour quelques universités par exemple si univ.name = 'Paris

    j'ai essayé aussi de faire union mais le count est faux

    Merci de votre aide

  2. #2
    Membre du Club Avatar de Arunna
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT count(univ.name),univ.etat
     
    FROM univ
     
    WHERE 
     
    univ.name not like '%PARIS%' 
     
    AND
     
    univ.departement NOT IN ('info','anglais')
     
    GROUP BY univ.name,univ.etat
    A tester

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Arunna Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT count(univ.name),univ.etat
     
    FROM univ
     
    WHERE 
     
    univ.name not like '%PARIS%' 
     
    AND
     
    univ.departement NOT IN ('info','anglais')
     
    GROUP BY univ.name,univ.etat
    A tester
    Ce n'est pas ce que je veux,

    Dans votre cas il va pas prendre université de Paris alors que c'est pas ce que je cherche.

    Ce que je veux si univ.name = Paris et univ.departement IN ('info','anglais') alors ne pas prendre en considération mais prendre les autres départements de l'université de Paris

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    bonjour,


    utilisez une structure case when dans le select (et un sum au lieu d'un count)

  5. #5
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par punkoff Voir le message
    bonjour,


    utilisez une structure case when dans le select (et un sum au lieu d'un count)
    Est ce que on peux faire un and dans un case ?

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    essayez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    case when ma_cond then ..else ... end

  7. #7
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par punkoff Voir le message
    essayez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    case when ma_cond then ..else ... end
    je ne vois toujours pas comment le faire , aussi la problématique de la fonction sum, c'est qu'il faut avoir que le count dans le select alors que dans mon cas j'ai plusieurs colonnes

  8. #8
    Membre du Club Avatar de Arunna
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Peux-tu nous indiquer le schéma de ta table "univ" ?

  9. #9
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Arunna Voir le message
    Peux-tu nous indiquer le schéma de ta table "univ" ?
    université c'est juste un exemple; sinon

    Dans université j'ai le nom, je fais une jointure avec département donc si je reprend la requête correctement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    SELECT count(univ.name),stat.etat,departement.name
     
    FROM univ,departement,stat
     
    WHERE  univ.id = departement.id
    AND univ.statid = stat.id
    AND departement.name NOT IN ('info','anglais')
     
    GROUP BY univ.name,univ.etat
    Donc dans ce cas il ne vas pas prendre tous les départements info anglais alors que moi je veux que ça soit valide si seulement univ.name = 'Paris'

  10. #10
    Membre du Club Avatar de Arunna
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2013
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Mars 2013
    Messages : 34
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT count(u.name) as nombre_univ,s.etat,d.name
    FROM univ u
    JOIN departement d
    ON u.id = d.id
    JOIN stat s
    ON u.statid=s.id
    WHERE
    d.name NOT IN ('info','anglais')
     OR
    u.name NOT LIKE '%PARIS%'
    GROUP BY nombre_univ,s.etat,d.name
    Avec un OR , tu devrais arriver au résultat que tu souhaite:

    Affiche tous sauf PARIS département info et anglais

  11. #11
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par Arunna Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT count(u.name) as nombre_univ,s.etat,d.name
    FROM univ u
    JOIN departement d
    ON u.id = d.id
    JOIN stat s
    ON u.statid=s.id
    WHERE
    d.name NOT IN ('info','anglais')
     OR
    u.name NOT LIKE '%PARIS%'
    GROUP BY nombre_univ,s.etat,d.name
    Avec un OR , tu devrais arriver au résultat que tu souhaite:

    Affiche tous sauf PARIS département info et anglais
    Au final j'ai pris un autre chemin avec un IF

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND IF (univ.name LIKE '%PARIS%',IF(departement.name IN ('info','anglais'),0,1),1) = 1

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

Discussions similaires

  1. [MySQL] and dans un select
    Par tapi21 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 23/02/2012, 10h14
  2. OR et AND dans un SELECT
    Par rfleury dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/11/2006, 16h29
  3. Joindre une valeur arbitraire dans un SELECT
    Par Tuxxy dans le forum Requêtes
    Réponses: 3
    Dernier message: 20/01/2004, 17h04
  4. Réponses: 3
    Dernier message: 23/09/2003, 09h12
  5. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06

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