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

  1. #1
    Membre régulier
    [HFSQL] Jointure avec order by desc le premier lu de la deuxième table
    Bonjour,

    Je but sur une requête et j'ai besoin de votre aide

    J'ai deux tables, une la table de mes archive avec l'inventaire et l'autre son historique de sortie et ce que je veux c'est la liste de toute mes archives avec le dernier numéro de sortie que j'appel RRA.
    Mon problème c'est que pour une archive elle peut être sortie plus de 5 fois et j'arrive pas avoir mon archive avec le dernier RRA.

    Voici ma rqt:
    Code sql :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT DISTINCT(Liste_Archives_Inventoriées_Globales.Code_Client), Liste_Archives_Inventoriées_Globales.CodeArchive, Liste_Globale_des_RRA.No_RRA
    FROM Liste_Archives_Inventoriées_Globales
    INNER JOIN Liste_Globale_des_RRA ON Liste_Archives_Inventoriées_Globales.CodeArchive = Liste_Globale_des_RRA.CodeArticle 
    WHERE  Liste_Archives_Inventoriées_Globales.Code_Client = 'C00001' ORDER by Liste_Globale_des_RRA.No_RRA DESC


    Merci de votre aide

  2. #2
    Membre expert
    Bonjour !
    Peux-tu dire si tu souhaites faire remonter aussi les archives qui ne seraient jamais sorties ?

    Si non, moi, dans ces cas, je passe par une table temporaire, pour la clarté comme pour les performances...

    Essaie ceci...

    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    create temporary table der_s as 
    select
    CodeArticle, No_RRA
    from Liste_Globale_des_RRA
    group by CodeArticle
    order by No_RRA DESC;
     
    select distinct a.Code_Client,a.CodeArchive, der_s.No_RRA as derniere_sortie
    from der_s
    inner join Liste_Archives_Inventoriées_Globales a on a.CodeArchive=der_s.CodeArticle and a.Code_Client = 'C00001'
    order by derniere_sortie desc;


    Au passage : jamais d'accents sur tes noms de table ou de colonne. Que de l'alpha numérique tout bête à l'anglaise.
    Mes billets de blog : un billet = une problématique précise
    It's easier to be friends with lots of people online than one person in person!

  3. #3
    Membre régulier
    Merci Dendrite,

    Effectivement j'ai oublié de préciser que je voulais tous les archives sortie ou non.
    Avec l'ordre des code archive et le dernier numéro RRA.

    Il y a pas une autre façon sans créer de table temporaire?

    En ce qui concerne les accents c'est pas moi qui ai créer la base et je ne suis arrivé qu'après.

    Merci de ton aide en tous cas

  4. #4
    Membre expert
    Ca ne change que ta seconde requête
    Code SQL :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    create temporary table der_s as 
    select
    CodeArticle, No_RRA
    from Liste_Globale_des_RRA
    group by CodeArticle
    order by No_RRA DESC;
     
     
    select distinct a.Code_Client,a.CodeArchive, der_s.No_RRA as derniere_sortie
    from Liste_Archives_Inventoriées_Globales a
    left join der_s on a.CodeArchive=der_s.CodeArticle
    where a.Code_Client = 'C00001'
    order by derniere_sortie desc;


    Il y a pas une autre façon sans créer de table temporaire?
    Si bien sûr, mais pourquoi tu t'interdis les tables temporaires ?
    Mes billets de blog : un billet = une problématique précise
    It's easier to be friends with lots of people online than one person in person!

  5. #5
    Membre régulier
    Merci Dendrite,

    Si bien sûr, mais pourquoi tu t'interdis les tables temporaires ?
    Car ma base est en hfsql, c'est du sql mais en moins bien, qui tourne pour les programmes windev.
    du coup si je lance ta rqt j'ai ce message d'erreur

    Erreur dans le code SQL de la requête <>. Initialisation de la requête impossible.
    Mot temporary inattendu