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 :

UPDATE/SELECT un peu trop complexe pour moi


Sujet :

Langage SQL

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 6
    Par défaut UPDATE/SELECT un peu trop complexe pour moi
    Bonjour,

    j'apprends le SQL un peu sur le tas. J'ai bien eu des cours de SGBD à l'université mais ça n'allait pas au delà des jointures pour autant que je me souvienne.

    J'ai aujourd'hui une table remplie de références, dates et prix, que je dois mettre à jour car les prix qui sont "fermés" m'empêchent de vendre la référence concernée.

    Un schéma valant mieux qu'un long discours, voici un exemple :



    Donc voilà, les dates se suivent au fur et à mesure des mises à jour des tarifs.
    Lorsque la dernière date est "ouverte" (=NULL), le prix renseigné sort, car la requête est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Prix FROM TablePrix WHERE Fournisseur = 'X' AND Article = 'Y' AND DateFin IS NULL
    Vous voyez le problème pour le fournisseur 1, article 2, aucune date de fin n'est ouverte, donc la requête précédente renverra NULL.

    Je cherche à écrire :

    - soit un UPDATE qui ouvre massivement toutes ces "dates de fin" de références où il n'y a aucune "date de fin" ouverte, sachant que c'est la "date de fin" la plus récente qui doit être ouverte bien sûr,

    - soit un SELECT qui me sélectionne, pour une référence donnée, en priorité le prix correspondant à une "date de fin" ouverte, sinon le prix de la "date de fin" la plus récente s'il n'existe pas de "date de fin" ouverte.


    J'ai commencé par essayé un SELECT, mais je galère un peu... Je mélange les MAX(), les TOP 1, les SELECT imbriqués etc...

    Je ne demande pas forcément une solution clé en main, même si ça me ferait gagner du temps c'est sûr, mais au moins une aide par rapport à la construction de la requête, par quoi commencer, par exemple grouper les Fournisseur, Article, puis trier les "date de fin" par ordre décroissante et prendre la première, mais avant ça il faut savoir s'il existe une "date de fin" ouverte ou non, etc...?

    Pour terminer je précise qu'il n'y a dans la réalité pas d'ID, les clés primaires sont le fournisseur, l'article et la "date de début".

    J'espère n'avoir pas été trop fouillis dans ma demande d'aide, et vous remercie par avance !

    Yat'
    Images attachées Images attachées  

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

Discussions similaires

  1. Besoin d'aide sur un select trop complexe pour moi
    Par Oribiahn dans le forum Requêtes
    Réponses: 1
    Dernier message: 24/08/2010, 15h22
  2. Requête trop complexe pour moi
    Par snips67 dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/01/2010, 09h24
  3. Tri complexe trop complexe pour moi
    Par nemo67 dans le forum Développement
    Réponses: 4
    Dernier message: 18/12/2009, 14h03
  4. Une requête trop complexe pour moi
    Par prgasp77 dans le forum Langage SQL
    Réponses: 13
    Dernier message: 14/01/2009, 17h12
  5. Requête un peu trop compliqué pour moi
    Par Kokito dans le forum Langage SQL
    Réponses: 5
    Dernier message: 18/04/2005, 15h17

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