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

SQL Firebird Discussion :

Fonction "plus près de"


Sujet :

SQL Firebird

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut Fonction "plus près de"
    Bonjour,

    Dans FB2.1 existe t'il une fonction qui permet de trouver l'enregistrement dans une table qui est "plus pret de" une valeur qu'on lui donne.

    Merci

  2. #2
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    Quelque chose du genre (je cherche la valeur la plus proche de 4500 pour la colonne ID)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT ID,COL1
    from
      MATABLE
    where ID = (select max(ID) FROM MATABLE where ID <= 4500)
    or ID = (select min(ID) FROM MATABLE where ID >= 4500)
    ou encore (mais cela scanne tous les enregistrements)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT FIRST 1 ID,COL1  
    FROM MATABLE 
    ORDER BY ABS(ID-4500)
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Super

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    tiens par contre je tombe sur un probleme

    J'essaie ce code dans une procédure stockée et rien ne se passe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vit=2;
    select first 1 CP from PUISS_TURBINE where NOM_PROJET=:projet order by abs(VITESSE_VENT-:vit) into cp;
    Si je passe au debugger la procédure se termine une fois la requete terminée au lieu de faire le reste du code.

    Ca peut venir d'où?

    Merci

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    On dirait que le probleme proviendrait plutot du debugger

  6. #6
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Moi je dirais que le probleme vient de votre code
    Essayez avec les : devant la variable CP que vous affectez dans le INTO.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vit=2;
    select first 1 CP from PUISS_TURBINE where NOM_PROJET=:projet order by abs(VITESSE_VENT-:vit) into :cp;

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    Bonjour

    Ca ne change rien mais j'ai laissé avec les :

    Merci

  8. #8
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Il n'y a pas de raison que ca ne fonctionne pas.
    La syntaxe que j'ai donnée est correcte.
    Si la requete ne renvoie rien c'est que vous ne sélectionnez pas de données (pas le bon nom de projet).

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    291
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 291
    Points : 144
    Points
    144
    Par défaut
    C'est pour ca que je pense que c'est le debugger qui plante. Car ma fonction ne retourne rien et je voulais justement la debugger mais lorsque je passe par cette requete le debugger plante

    Merci

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/05/2008, 22h26

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