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 et SQL. Discussion :

problème avec les résultats d'une requête select top1


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut problème avec les résultats d'une requête select top1
    Bonjour,

    J'ai crée une base de donnée avec une table "armoire_electrique" stockant un certain nombre d'armoires éléctriques qui ont chacune des surfaces différentes et qui ont pour caractéristique principale leur "dimension" (clef primaire de la table(type texte) ) et une table "materiel_electrique" stockant différents types de matériel éléctrique, chaque matériel possédant une surface précise.
    Dans mon formulaire principal, je calcule la somme des surfaces de chaque matériel de la base et j'obtient en pied de formulaire une "surface_finale".
    Ensuite, je désirerai séléctionner l'armoire qui possède la surface immédiatement supérieure à cette "surface_finale". Pour ce faire, voici le code sql que je rentre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TOP 1 (armoire.dimension) AS armoire_choisie
    FROM armoire 
    WHERE (((armoire.surface)>[surface_finale]));
    Cette requête me renvoie toujours le même résultat=le même type d'armoire quelque soit la "surface_finale" obtenue...

    Je ne sais plus du tout quoi faire...
    Merci de votre attention et de votre aide

  2. #2
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Surface finale doit être calculée dans ta requête et pas dans le formulaire.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut même problème de requête...
    Citation Envoyé par Heureux-oli
    Surface finale doit être calculée dans ta requête et pas dans le formulaire.
    J'ai calculé ma surface finale grâce à une requête et ça renvoie exactement le même résultat que précédement...
    Ce qui est étrange, c'est que lorsque la surface finale est inférieure à 1870000, la requête me renvoie toujours l'armoire qui a pour surface 1870000 et sinon lorsque la surface totale est superieure à 1870000, elle renvoie aux bonnes armoires... :s

    Encore merci pour votre aide...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Avec le TOP 1 tu récupéres le premier enregistrement, mais ceux-ci ne sont pas trié, tu n'as pas de tri (Order By), donc cela peut te renvoyer différentes valeurs.

    Starec

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut solution très proche...
    Citation Envoyé par Starec
    Bonjour

    Avec le TOP 1 tu récupéres le premier enregistrement, mais ceux-ci ne sont pas trié, tu n'as pas de tri (Order By), donc cela peut te renvoyer différentes valeurs.

    Starec

    En effet tu as raison, c'est une histoire de tri..
    La requête renvoie les bonnes armoires lorsque je trie les surfaces des armoires manuellement .
    Par contre lorsque je rentre le code suivant et que les surfaces ne sont pas préalablement triées, la requête ne renvoie pas toujours les bonnes armoires...

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TOP 1 (armoire.dimension) AS armoire_choisie, armoire.surface
    FROM armoire
    WHERE (((armoire.surface)>=[surface_finale]))
    ORDER BY (armoire.dimension), armoire.surface;

    Merci encore de votre attention...

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 72
    Points : 14
    Points
    14
    Par défaut c'est résolu
    j'avais appliqué le tri à la fois sur la dimension et la surface de l'armoire et c'est pour cela que ça ne marchait pas. Maintenant je l'ai activéé uniquement sur la surface et ça marche!!!

    encore merci de votre aide!!!

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 23/02/2015, 09h20
  2. Réponses: 2
    Dernier message: 24/11/2012, 13h51
  3. [MySQL] Construire une liste avec les résultat d'une requête
    Par Requiem11 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/04/2009, 23h18
  4. Réponses: 1
    Dernier message: 25/06/2007, 16h33
  5. Réponses: 2
    Dernier message: 10/02/2007, 05h52

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