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 :

Utilisation de case when avec une sous requête


Sujet :

Requêtes MySQL

  1. #1
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut Utilisation de case when avec une sous requête
    Bonjour j'ai une question, je souhaite faire un test avec CASE WHEN de mysql mais je ne sais pas s'il est correct au niveau syntaxique et logique.
    Je souhaite vérifier dans une table la présence d'un enregistrement mais avec certaine condition.
    dans cette table je ne peux avoir de doublons avec deux champs spécifiques.
    Je m'explique :
    • Un élève peut être dans plusieurs école
    • un élève ne pas être ajouter deux fois dans la même école

    Donc le champs id_school peut apparaitre plusieurs fois, le champs idprofil également mais pas simultanément.
    Donc la ligne :
    idprofil = 1 , id_school = 2 ne peut être insérer qu'une seul fois mais
    idprofil = 1, id_school = 1 | idprofil = 2, id_school = 1 est tout à fait correct.
    Mon test consiste à vérifier que cela n'arrive pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CASE WHEN (SELECT id_profil from dc_sc_student 
    WHERE idprofil = 1 AND id_school = 'l7etqxvhwzk4ogwkc') AS verify_st
    THEN 1 ELSE 0 END
    Je suppose que j'ai encore chercher midi à quatorze heure et que j'ai mal fait la requête puisque c'est incorrect.
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    il ne manquerait pas un petit EXISTS devant la sous-requête ?
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre confirmé Avatar de gtraxx
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 043
    Points : 570
    Points
    570
    Par défaut
    Bonjour Antoun
    il ne manquerait pas un petit EXISTS devant la sous-requête ?
    Ou sa ?
    J'ai essayer plusieurs syntaxe mais je me trompe chaque fois ,c'est vraiment gênant
    Mais est ce nécessaire que je fasse une sous requête pour retourner ce que je désire ?
    Au petit déjeuner, je prend du PHP et au souper du jQuery.
    AFUP 2009 : Bien optimiser son code pour le référencement
    Mon projet open source de librairie PHP 5: magix cjquery

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut
    Citation Envoyé par gtraxx Voir le message
    Bonjour Antoun
    Ou sa ?
    J'ai essayer plusieurs syntaxe mais je me trompe chaque fois ,c'est vraiment gênant
    Si ce que tu veux savoir c'est si la sous-requête renvoie des lignes ou nom, c'est un EXISTS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT CASE WHEN EXISTS (SELECT id_profil FROM dc_sc_student 
    WHERE idprofil = 1 AND id_school = 'l7etqxvhwzk4ogwkc') AS verify_st
    THEN 1 ELSE 0 END
    Si ce n'est pas ça que tu veux savoir, il faut que tu me ré-expliques quel est le cas que tu veux tester.
    Citation Envoyé par gtraxx Voir le message
    Mais est ce nécessaire que je fasse une sous requête pour retourner ce que je désire ?
    Tu peux peut-être transformer ta sous-requête en jointure, mais pour ça il faudrait que tu donnes ta requête complète et que tu l'expliques un peu.
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

Discussions similaires

  1. Utilisation CASE WHEN avec une liste de valeurs
    Par mortimer.pw dans le forum PL/SQL
    Réponses: 5
    Dernier message: 26/03/2009, 12h50
  2. Réponses: 2
    Dernier message: 02/04/2008, 09h59
  3. Check avec une sous-requête
    Par Neal Morse dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 22/03/2008, 22h31
  4. Ordonner avec une sous requête ,possible ou pas?
    Par worm1 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 20/02/2007, 06h23
  5. Update avec une sous requête
    Par Deejoh dans le forum Installation
    Réponses: 7
    Dernier message: 25/01/2006, 11h50

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