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 :

SQL multitable avec regroupement et max


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 48
    Points
    48
    Par défaut SQL multitable avec regroupement et max
    Bonjour,

    Je souhaite faire une requête SQL à partir d'excel, dans une base Access.

    J'ai deux tables liées par des champs d'index :
    Table 1 -> Nro Documents
    Table 2 -> Rév Documents

    Je souhaire récupérer l'ensemble des champs des deux tables avec la totalité des enregistrements de la Table 1 (jointure left join). Ceci uniquement pour la révision maximale du document (Champ "Nro de révision" de la Table 2)
    Les deux tables comportent un champ d'index numéro automatique. Ceci m'interdit les forme comme Select table1.*,Table2.* ...

    Auriez-vous une solution ?

    Petit détail la valeur de la révision est alphanumérique. Peut-on déterminer ma méthode ce comparaison ?

    Merci d'avance de prendre du temps à réfléchir à mon problème.

    RLAPT

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Au vu de ces articles :
    http://sqlpro.developpez.com/cours/sqlaz/jointures/
    http://sqlpro.developpez.com/cours/sqlaz/ensembles/


    Que ne comprenez-vous pas ?

    Merci de revenir avec vos requêtes de test + description de l'erreur le cas échéant.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 70
    Points : 48
    Points
    48
    Par défaut
    Bonjour,
    En fait ce n'est pas une incompréhension, c'est un manque de savoir faire.

    Dans un groupement, on ne peut pas utiliser les astérisques. Comme le nombre de champs est relativement important dans les deux tables et que la base est en développement. Je rechigne à écrire une requête avec tous les noms de champs (grande longueur et difficulté de modification).

    En fait, je souhaiterais savoir s'il est possible de faire une requête du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Table1.*, Table2.* 
       FROM Table1 LEFT JOIN Table2 on IndexS = IndexE
       GROUPBY Table1.NROAFF
    et pouvoir sélectionner que l'enregistrement correspondant à la valeur max du champ révision qui se trouve dans la table 2.

    Ce qui correspond bien à une seule possibilité pout chaque sélection.

    Alors la question reste : Y a-t'il une solution ?

    Merci d'avance.

  4. #4
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Plusieurs remarques :

    1) les champs sont à la campagne ou dans les formulaires mais pas dans les tables SQL qui ne sont composées que de lignes et de colonnes.

    2) Évite de relancer la guerre des étoiles !

    3) Qu'entends-tu par "nombre de champs est relativement important" ?
    S'il y a plusieurs dizaines de colonnes dans chaque table, peut-être faut-il revoir la modélisation des données car c'est en principe très rare.

    sélectionner que l'enregistrement correspondant à la valeur max du champ révision qui se trouve dans la table 2.
    Si j'ai bien compris le sens de ta requête, cela donnerait quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT -- les colonnes nécessaires et pas étoile !
    FROM table1 t1
    INNER JOIN table2 t2 ON t1.IndexS = t2.indexE
    INNER JOIN 
    (
    	SELECT t1.NROAFF, MAX(t2.revision) AS revision_max
    	FROM table1 t1
    	INNER JOIN table2 t2 ON t1.IndexS = t2.indexE
    	GROUP BY t1.NROAFF
    ) tmp 
    	ON tmp.NROAFF = t1.NROAFF
    	AND tmp.revision_max = t2.revision
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. requete sql avec regroupement
    Par willow69 dans le forum SQL
    Réponses: 1
    Dernier message: 30/10/2008, 10h35
  2. requete sql en vba avec un select MAX
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 29/05/2007, 15h59
  3. requete SQl avec la fonction max () qui ne marche pas
    Par eclipse012 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 09/11/2006, 14h32
  4. [Débutant / SQL] Requête avec la fonction MAX
    Par bugmenot dans le forum Access
    Réponses: 3
    Dernier message: 14/04/2006, 10h43
  5. reqite sql avec regroupement , cmpte et somme
    Par abdallahi dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/12/2005, 12h08

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