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 :

[Access] création d'un champ contenant le max des champs précédents


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut [Access] création d'un champ contenant le max des champs précédents
    Bonjour à tous;

    Je dispose d'une requete qui, pour schématiser récupère des notes et des coefficients associés à ces notes du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT note1, coef1, note2, coef2, note3, coef3
    FROM Matable
    WHERE "conditions"
    J'aimerais savoir si il existe un moyen de créer une dernière colonne contenant le maximum de (coef1, Coef2, coef3). J'ai essayé de me debrouiller avec un switch mais sans succès

    Merci pour votre aide

    edit : vraiment pas tres glamour comme question, mais franchement, je sèche!
    en gros dans un monde idéal je ferais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT note1, coef1, note2, coef2, note3, coef3, MAX(coef1, coef2, coef3) AS mon_max
    FROM Matable
    WHERE "conditions"
    Mais la vie est injuste

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Pourquoi tu ne décompose pas ta table en plusieurs ?
    Le fait que tu as des difficultés dans une requête peut résulter d'une mauvaise conception de la base de données.

  3. #3
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    Citation Envoyé par jeremya
    Pourquoi tu ne décompose pas ta table en plusieurs ?
    Le fait que tu as des difficultés dans une requête peut résulter d'une mauvaise conception de la base de données.
    Décomposer la table en plusieur ne ferait que déplacer le probleme!
    En fait, je cherche a corriger un questionnaire (qcm). Les réponses sont au nombre de 2 ou 3 et chacune des réponses est pondérée. Si c'est du binaire, on a un point quand c juste et zéro quand c'est faux. Si c'est ternaire on a du 2, 1,0. Ca veut dire en gros que les réponses ternaires comptent plus que les binaires!

    Je récupère mes réponses à la volée et je les stocke au fur et à mesure dans une table du type ("personne qui répond", "numéro de la question", "réponse1","réponse2", "réponse3"). Je met 1 dans un des champs "réponses" pour matérialiser le choix. Si c'est oui => 1 dans la case 1, si c'est non dans la case 2, et la case en plus est pour le cas d'une réponse ternaire.

    Quand je veux faire la somme des résultats, je fais une jointure pour avoir un truc du genre

    ("réponse donnée", "coeff pour cette réponse", "produit des deux") le pour chacun des trois champs.
    Si on répond oui (case 1) et que la bonne réponse était non (case 2) cela donne (avec des barres pour séparer les cases, le premier digit est la réponse le second le coef associé à cette réponse, donc 1 pour la juste et 0 pour les autres)

    1 0 | 0 1 | 0 0
    a b c d e f

    en faisant a*b + c*d + e*f on tombe sur le score associé à la question. facile!

    Oui mais ce score il est sur combien??? il est sur le max des coefficients!

    ET J'ARRIVE PAS A LE RECUPERER crévindiou !!!

  4. #4
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    Personne n'a une idée??
    Up!

  5. #5
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MAX(coef1, coef2, coef3)
    S'il n'y a pas de fonction MAX pour obtenir le max des valeurs d'une même ligne, tu peut peut-être essayer avec des IF.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MAX(coef1, coef2, coef3)
    =
    IF(coef2>coef1, IF(coef3>coef2,coef3,coef2), IF(coef3>coef1,coef3,coef1) )

  6. #6
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    Des if dans une clause select ?? je savais pas que ca existait, je vais essayer merci!
    J'avais regardé dans la liste de fonction access si ca existait mais comme je l'avais pas trouvé j'en avais déduit que c'était pas possible... comme quoi on en apprend tous les jours!

  7. #7
    Membre averti
    Inscrit en
    Décembre 2004
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 43
    Par défaut
    dans la mesure ou mes triplets de coefs étaient uniquement de type 0 1 2 ou 1 0 0, j'ai résolu le probleme en faisant un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ((coef1+coef2+coef3+1)/2) as mon_max
    D'accord c'est sale, mais ca a le mérite de sortir 2 dans le premier cas et 1 dans le deuxieme ! Mais si jamais je décide un jour qu'on doit pouvoir mettre un coef à 3 de temps en temps, c'est la catastrophe!! Donc si vous trouvez de quoi faire un vrai authentique max sur des lignes et non sur des colonnes, je suis ultra preneur!!!

    PS : j'avais repéré la fonction MaxDom sur access qui m'avait l'air interessante, mais pas moyen de trouver un bout de code ou elle est utilisée pour savoir quels arguments elle prend et ce qu'elle retourne exactement. Et vu la qualité de la doc gro$oft sur la question ...

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

Discussions similaires

  1. [AC-2010] Propiété des champs contact Outlook / import des contacts OL dans ACCESS
    Par franckb74 dans le forum VBA Access
    Réponses: 5
    Dernier message: 17/09/2013, 20h58
  2. [AC-2003] Chercher des champs contenant un retour chariot
    Par Wanaka dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/10/2011, 13h59
  3. Valeur des champs dans l'arbre des composants
    Par mymyma dans le forum JSF
    Réponses: 2
    Dernier message: 06/07/2006, 12h19
  4. Réponses: 14
    Dernier message: 17/05/2006, 18h16
  5. Réponses: 7
    Dernier message: 09/02/2006, 17h51

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