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 :

Arret Commande SQL dès un élément trouvé


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Par défaut Arret Commande SQL dès un élément trouvé
    Bonjour,

    Je lance une commande SQL dont le résultat peut être assez long a s'afficher.
    Or, je me sers de cette commande uniquement pour vérifier l'existence d'au moins un élément. Actuellement, je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Select count (ID) from matable where ......
    avec pas mal de jointure a la suite
    Je me fous qu'il y ai un, deux ... ou 10 millions enregitrments retournés

    Existe t-il en SQL des mots clés ... permettant de stopper le recherche dès le premier élément trouvé ?

    Merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    SQL est un langage de traitement ensembliste de données.
    Le SGBD recherchera donc toutes les données correspondant au filtre de la requête.
    D'autant plus avec COUNT : la valeur retournée est le nombre d'enregistrements trouvés.
    Comment retourner ce nombre si la recherche n'est pas terminée ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Par défaut
    Merci pour votre réponse

    Je met count, ainsi il me renvoie une seul ligne
    j'aurais très bien utilisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ID FROM matable WHERE ......
    et tester la fin de fichier derrière.

    en fait, je cherche un equivalent a LIMIT du mysql

    cordialement

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Si ton SGBD (que tu n'as pas précisé : Règles du forum Langage SQL à lire par tous) comporte un optimiseur extrêmement efficace, il tirera peut-être parti de cette construction, qui retournera 0 ou 1 ligne suivant que le critère est vérifié ou non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT 1
    FROM DUMMY
    WHERE EXISTS
     ( SELECT 1
       FROM matable
       WHERE condition
     );
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Par défaut
    1000 excuses, c'est vrai, j'utilises firebird 1.5

    Apparament, votre méthode est inefficace sous firbird, c'est dommage. En cherchant un peu j'ai croisé des mots clés, comme FIRST, tel que

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select FIRST Monchamp from Matable
    Mais ce mot clé est inconnu

    Cordialement

  6. #6
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 134
    Par défaut
    Des clauses de limitation des résultats, telles que FIRST, TOP ou LIMIT, s'appuient sur un ensemble de lignes ordonné.
    Et pour pouvoir ordonner les lignes résultant d'une requête... il faut les avoir toutes récupérées. En effet, comment prédire que la dernière ligne trouvée correspondant au filtre ne sera pas la première une fois appliquée la clause ORDER BY ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 106
    Par défaut
    Exact, j'étais justement en train de m'en rendre compte !

Discussions similaires

  1. commande sql et élément Session
    Par makin_toch dans le forum ASP.NET
    Réponses: 10
    Dernier message: 31/05/2011, 18h21
  2. Commande SQL / connaître taille d'1 base
    Par Thomad dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/04/2005, 11h38
  3. [JDBC] Commande SQL récalcitrante
    Par Dahu dans le forum JDBC
    Réponses: 7
    Dernier message: 05/04/2005, 16h03
  4. commande SQL truncate table xxx
    Par Yogy dans le forum SQL
    Réponses: 1
    Dernier message: 07/10/2004, 14h57
  5. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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