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 :

Requête SQL qui ne renvoie rien quand la valeur est nulle


Sujet :

Requêtes MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut Requête SQL qui ne renvoie rien quand la valeur est nulle
    Bonjour,

    Petit soucis avec une requête ^^ !

    J'ai 2 tables :
    - info_ut table avec les id des utilisateurs
    - info_planning table avec les id des utilisateurs et des dates (en gros)

    Je souhaite récupérer tous les utilisateurs qui n'ont pas de date qui corresponde à une date précise (euhh c'est toujours clair ^^?) . Voici ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    SELECT id,prenom,nom 
    FROM info_ut 
    WHERE id !=( 
          SELECT t1.id 
          FROM info_planning AS t1 
          INNER JOIN info_ut AS t2 ON (t1.id = t2.id) 
          WHERE jour=1 AND 
                     id_mois=9 AND 
                     annee=2010 AND 
                     am_pm=1) AND 
              formateur=1 
    ORDER BY nom
    Quand le 2ème SELECT n'est pas nul, j'ai bien ce que je veux. Tous les utilisateurs sauf celui trouvé.
    Quand il est nul par contre j'ai aucun résultat. Je souhaite avoir tous les utilisateurs non trouvé.

    Merci de votre aide

  2. #2
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    La syntaxe pour la comparer une colonne avec la valeur NULL est IS NULL ou IS NOT NULL. Du coup, ça ne peut pas fonctionner avec " != " (qu'il vaut mieux remplacer par " <> ", normalisé).

    Sinon, ta requête peut se remplacer par quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT t1.id, t1.prenom, t1.nom 
    FROM info_ut t1
    WHERE t1.formateur = 1
    AND NOT EXIST ( 
          SELECT * 
          FROM info_planning t2 
          WHERE t2.id = t1.id
          AND t2.jour=1 
          AND t2.id_mois=9 
          AND t2.annee=2010 
          AND t2.am_pm=1
    )
    ORDER BY t1.nom
    A vérifier en fonction du schéma exact des tables...

    ced

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Merci de la réponse tout d'abord.

    J'ai une erreur
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'EXIST( SELECT id_formateur FROM intranet_plannings_formateurs t2 ' at line 4
    Il semble que ce soit le NOT EXIST. J'ai remis id <>(...) mais toujours le même résultat.

    Voici mes tables :

    intranet_info_ut (id,nom,prenom,....)
    intranet_plannings_formateurs(id,id_formateur,jour,id_mois,annee,...)

    Voici donc ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT id,prenom,nom FROM intranet_info_ut AS t2 
    WHERE t2.formateur=1 AND
    	   t2.id <>(
                           SELECT t1.id_formateur  
                           FROM intranet_plannings_formateurs AS t1  
    		       WHERE  t1.jour=".$jour." 
                           AND t1.id_mois=".$mois." 
                           AND t1.annee=".$annee." 
                           AND t1.am_pm=".$temps.")
    ORDER BY nom
    Qui ne marche pas ^^

  4. #4
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 040
    Points : 23 795
    Points
    23 795
    Par défaut
    Oooops , il faut un S à la fin de EXISTS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SELECT t1.id, t1.prenom, t1.nom 
    FROM info_ut t1
    WHERE t1.formateur = 1
    AND NOT EXISTS ( 
          SELECT * 
          FROM info_planning t2 
          WHERE t2.id = t1.id
          AND t2.jour=1 
          AND t2.id_mois=9 
          AND t2.annee=2010 
          AND t2.am_pm=1
    )
    ORDER BY t1.nom
    Ca devrait déjà éliminer l'erreur...

    ced

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 151
    Points : 69
    Points
    69
    Par défaut
    Génial c'est ça et tout marche bien

    Merci

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

Discussions similaires

  1. plantage quand une valeur est nulle dans une requete
    Par vinze60 dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 29/04/2013, 21h55
  2. Requête géographique qui ne renvoie rien
    Par Cartman.inc dans le forum SQL
    Réponses: 3
    Dernier message: 07/09/2011, 11h12
  3. [SQL-Server] Requête qui ne renvoie rien PHP5 et SQL SERVER 2000
    Par Sytchev3 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 28/05/2009, 09h46
  4. [ODBC] Requète SQL qui ne retourne rien
    Par WebManiaK dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/01/2009, 14h33
  5. Requete sql qui ne renvoie rien :-(
    Par patchouli dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/02/2007, 09h41

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