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] Trier une table sur plusieurs critères


Sujet :

Langage SQL

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut [Access] Trier une table sur plusieurs critères
    Bonjour à tous !
    Voilà j'ai fait une recherche sur le forum sur tous les tris mais je n'ai pas trouvé ce qui me convient. Mon problème sera certainement simples pour certains mais je ne suis pas un pro du SQL loin de là...
    J'utilise Access 2003 et C++ Builder tout d'abord.
    J'ai une table Table1(qui contient 4 champs dont 1 que j'appelle ClientID)
    J'ai une table Table2 (qui contient plusieurs champs dont ClientID et NomClient)
    Vous l'aurez compris, je souhaiterais trier ma Table1 avec les ClientID déja classés (par ordre alphabétique de tous les clients des la Table2)

    J'ai essayé quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FRom Table1 ORDER BY Table2.NomClient ASC
    Mais bien entendu ça ne va pas...
    Peut-être dois-je utiliser les sous requêtes mais je ne l'ai jamais fait.
    Un pro pourrais-t-il me donner un coup de pouce?
    D'avance, Merci

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Bonjour tu essaies de trier des données de la table2 alors qu'elle ne se trouve pas dans le FROM.
    Ensuite, il te faut faire la jointure entre la table1 et la table2 via le champ clientId.
    Pour que tu n'ais pas juste à recopier, je te conseille cet url http://sql.developpez.com/sqlaz/jointures/ qui t'apprendra à faire les jointures.
    Si je ne te les donne pas directement c'est également car je n'utilise pas la norme SQL comme je devrais et que la requete que je te donnerais ne conviendrait pas pour ACCESS.
    bon courage.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    merci pour ta réponse.
    J'ai été voir du côté des jointures et j'ai lu le tuto de sqlpro qui est très bien fait mais justement je dois dire que je suis un peu perdu...
    J'ai bien compris que je dois sélectionner dans mon FROM mes 2 tables. Mais c'est après le JOIN que je ne voie pas du tout la syntaxe. Je patauge là...

  4. #4
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT 'sélectionne tes champs' FRom Table1 T1, Table2 T2
    Where T1.ClientId=T2.ClientId
    ORDER BY Table2.NomClient ASC
    C'est pas plus compliqué que ça si j'ai compris ce que tu voulais
    Bon courage

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    Merci pour ta réponse !
    Au vu de celle-ci oui, je pense que c'est la syntaxe à mettre. Je l'avais également essayé mais il me demande des paramètres. La vrais Requête SQL est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT IndexIntermediaire, ClientID, IndexConsommation, TIndexIntermediaire.Parcelle, DateDebut, DateFin, SurfaceParcelle
    FROM TIndexIntermediaire, TSuperficie
    WHERE TIndexIntermediaire.ClientID=TSuperficie.ClientID
    ORDER BY TSuperficie.NomTitulaire;
    Il me demande de rentrer une valeur pour IndexIntermediaire, TSuperficie.ClientID et TSuperficie.NomTitulaire
    N'y a-t-il pas un moyen de lui demander de prendre toutes les valeurs sans me demander de paramètres?

  6. #6
    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
    Cette synatxe (jointure dans le WHERE) date d'avant 1992 !!!!

    Il faut faire ses jointures avec des JOIN dans un prédicat ON !!!!

    Au passage utiliser des alias ou surnom...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT IndexIntermediaire, ClientID, IndexConsommation, II.Parcelle, DateDebut, DateFin, 
           SurfaceParcelle
    FROM   TIndexIntermediaire as II
           INNER JOIN TSuperficie as S
                 ON II.ClientID = S.ClientID
    ORDER BY S.NomTitulaire
    A +

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Février 2003
    Messages
    787
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 787
    Points : 276
    Points
    276
    Par défaut
    Merci bcp ça fonctionne impecc comme ça !

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

Discussions similaires

  1. [WD16] Affichage d'une table sur plusieurs étages
    Par DonkeyPuncher dans le forum WinDev
    Réponses: 2
    Dernier message: 26/04/2013, 10h24
  2. [DBUnit] Trier une table sur son ID
    Par Wise_Sherkaan dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 22/12/2011, 12h34
  3. [MySQL] Répartition d'une table sur plusieurs base de données
    Par jerome572 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/05/2011, 18h58
  4. trier une table sur des pourcentages
    Par chris0938 dans le forum jQuery
    Réponses: 8
    Dernier message: 01/06/2010, 16h53
  5. requete pour diviser une table sur plusieurs tables
    Par futurist dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 04/09/2008, 23h51

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