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

Langage SQL Discussion :

Est ce que ma requete est juste


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Est ce que ma requete est juste
    Bonjour,
    Une petite question avant que je fasse des bêtises
    J'ai deux tables et je veux compter le nombre de valeur
    présent dans la table 1 et absent de
    la table2
    j'ai écris cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) from table1 A
    WHERE NOT EXISTS
    (SELECT NULLIF(0,0)
    FROM table2 B 
    WHERE A.donne = B.donne )
    En gros pour être plus clair,
    J'ai 2 tables prénom et je veux compter combien de prénom sont
    présent dans la table1 et absent de la table2

    Est ce que ce que la requete que j'ai écris est bonne ?
    Merci de votre aide

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    A quoi sert le NULLIF dans la sous-requête ? Un SELECT 1 fera très bien l'affaire.
    Est-ce qu'il peut y avoir des prénoms en double dans Table1 ? Si c'est le cas, il faut les dédoublonner dans le COUNT().

    Sinon il y a plusieurs façons d'écrire ce genre de requête, avec un NOT IN, un NOT EXISTS, un EXCEPT, voir une jointure externe. J'avoue que je ne sais pas laquelle est la plus rapide (j'ai tendance à privilégier la jointure...).

    Tatayo.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Août 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Août 2015
    Messages : 14
    Points : 14
    Points
    14
    Par défaut Jointure externe
    Merci tatayo.
    Mais comment tu l'ecris avec une jointure externe ?

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    C'est tout simple:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select t1.*
    from t1
    left outer join t2 on t1.colx = t2.colx
    where t2.colx is null

    Il faut choisir dans le WHERE une colonne de t2 qui ne peut pas être nul (un id par exemple).

    Tatayo.

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Sinon il y a plusieurs façons d'écrire ce genre de requête, avec un NOT IN, un NOT EXISTS, un EXCEPT, voir une jointure externe. J'avoue que je ne sais pas laquelle est la plus rapide (j'ai tendance à privilégier la jointure...).
    Le NOT IN peut pénaliser fortement, car il construit l'ensemble correspondant au IN, ensemble qui peut être conséquent, pour pouvoir vérifier le NOT

Discussions similaires

  1. Est ce que cette requete est correcte
    Par abdelkarim_1987 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/07/2013, 18h24
  2. pourquoi table temporaire est mieux que sous requete ?
    Par gomodo dans le forum Requêtes
    Réponses: 1
    Dernier message: 10/02/2010, 16h24
  3. [MySQL] est ce que cette méthode est juste
    Par info_sara dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 13/06/2008, 20h08
  4. Est ce que mon programme est juste ?
    Par autoin dans le forum C
    Réponses: 6
    Dernier message: 25/01/2008, 17h06
  5. [MySQL] Probleme de requete est ce que quelqu"un pourrait m'aider
    Par sephirothmana dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 20/06/2006, 17h39

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