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 :

Requête SQL table éléments archivés


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Requête SQL table éléments archivés
    Bonjour à tous,

    Je me permets de poster ici car je suis bloqué sur une requête SQL :

    Je cherche à faire une requête SQL via ODBC sur excel sur 2 tables d'un ERP :

    - 1ère table : "archive en-tête commande de vente" contient les données de l'en-tête des commandes de ventes passées (date, client, etc..)
    - 2ième table : "archives lignes commande de vente" contient les données des lignes des commande de ventes (N° article/quantité/montant)

    La clé de jointure c'est le n°document que l'on peux retrouver dans les 2 tables.

    Cependant, la difficulté que je rencontre est que ces 2 tables stockent des versions différentes en fonction des modifications effectuées.

    Exemple :
    Si le document a été modifié 3 fois, j'ai 3 fois les données avec un n° de version (1 pour la première fois, 2 pour la seconde, 3 pour la troisième...)

    Je cherche à avoir systématiquement la dernière mise à jour et non pas les 3 versions. Dans l'exemple je cherche donc la version 3.

    J'espère que je suis assez claire.

    Merci beaucoup pour votre aide

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Respectez la charte de postage en postant le DDL de vos tables.

    A +

  3. #3
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Le plus simple est de vous baser sur des vues :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    create view dernières_entêtes
    as
    select *
    from entêtes e
    inner join (
       select numero, max(version) version
       from entêtes
    ) m on m.numero = e.numero and m.m.version = e.version
    Et la même sur les lignes.

    Ensuite travaillez plutôt sur ces vues, qui ne contiendront que les derniers versions.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Respectez la charte de postage en postant le DDL de vos tables.

    A +
    Désolé, qu'est-ce que le DDL ?

    merci stringbuilder, je ne savais pas que la fonction max existait...

    Peut-on le faire sans créer de vue ? (je ne crois pas avoir les accès sur le serveur pour...)


    Merci et désolé si je n'ai pas respecter la bonne façon de poster

  5. #5
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Bonjour,

    Citation Envoyé par fredco74 Voir le message
    Désolé, qu'est-ce que le DDL ?
    Data Definition Language: Ce sont les commandes qui permettent de définir les structures/schéma de votre base, ici, les ordres CREATE TABLE.

    Voir le point 5.


  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Plutôt que de passer par des vues, tu peux passer par des sous-requêtes.
    Mais la requête finale va être inutilement complexifiée.

    Tu peux éventuellement passer par des CTE pour pallier à l'absence de vue.h

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2013
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Plutôt que de passer par des vues, tu peux passer par des sous-requêtes.
    Mais la requête finale va être inutilement complexifiée.

    Tu peux éventuellement passer par des CTE pour pallier à l'absence de vue.h
    Ha oui je viens de comprendre ta requête !

    C'est bien de créer 2 vues qui contiennent sur le critère max(n° version) pour avoir la version la plus ancienne. ?

    Qu'est qu'un ce CTE ?

    Pour le DDL, j'ai juste un accès en lecture des tables sur l'assitant ODBC d'Excel, je ne suis pas certain de pouvoir l'obtenir

    Merci désolé mais je ne suis pas IT

  8. #8
    Modérateur
    Avatar de Chtulus
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2008
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2008
    Messages : 3 094
    Points : 8 678
    Points
    8 678
    Par défaut
    Re,

    Citation Envoyé par fredco74 Voir le message
    Qu'est qu'un ce CTE ?
    Common Table Expression...

    Faudrait penser à chercher un peu

    SQLpro explique vite fait ici


Discussions similaires

  1. Requête SQL table to table
    Par jeromeb66 dans le forum Langage SQL
    Réponses: 16
    Dernier message: 18/07/2011, 11h47
  2. requêtes sql sur plusieurs tables
    Par zahiton dans le forum Langage SQL
    Réponses: 4
    Dernier message: 25/11/2005, 11h59
  3. [SQL] requêtes SQL sur plusieurs tables
    Par zahiton dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/11/2005, 17h32
  4. Réponses: 9
    Dernier message: 21/11/2005, 19h51
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 17h26

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