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 :

[ORDER BY] faire un order by pour 2 tables en relation


Sujet :

Langage SQL

  1. #1
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut [ORDER BY] faire un order by pour 2 tables en relation
    Bonjour,

    Pas facile d'expliquer dans le titre, mais je cherche à faire un order by très spécial:

    j'ai 2 tables : une "clients", l'autre "jobs"

    clients comportent les champs suivants : id, nom, ...

    jobs les champs : id, nom, client_id, ...


    j'aimerais faire un ORDER BY sur mes jobs classé par ORDRE alphabétique croissant des clients.

    Etant donné que dans ma table "jobs", le champ "client_id" retourne uniquement l'id, si je fais un "ORDER BY client_id ASC" évidement ça me trie en fonction de l'id du client.

    Comment faire pour trier mes jobs non pas par id croissant, mais par nom de client?


    J'espère que j'ai été clair

    Un grand merci

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 103
    Points : 28 392
    Points
    28 392
    Par défaut
    Il faut faire une jointure entre jobs et clients avant de faire le tri

  3. #3
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Ok merci c'est gentil

    Cependant, il existe différent types de jointures, laquelle serait la plus appropriée?

    Merci.

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Sayrus
    Cependant, il existe différent types de jointures, laquelle serait la plus appropriée?
    Chacune répond à un besoin spécifique - c'est plus ou moins vrai - donc à vous de déterminer la plus apropriée en fonction de votre besoin.
    Ex : INNER JOIN Vs LEFT JOIN

    Pour ce faire, lisez cet article : http://sql.developpez.com/sqlaz/jointures/

  5. #5
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Un grand merci

    EDIT : Je suis vraiment trop con...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM jobs, clients WHERE client_id=job_client ORDER BY client_nom ASC
    A force de faire du MySQL pour des requêtes simples, on oublie vite les jointures et leur intérêt!

    Merci pour ce rafraichissement en tout cas!

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Pourquoi faire vos jointure dans la clause WHERE et non dans le FROM.
    Votre syntaxe est vieille de 20 ans et n'a plus de raison la justifiant.
    A cause de la version de MySQL ?

    PS : n'oubliez pas de cliquer sur "Résolu" si une réponse a été apportée à votre question.

  7. #7
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Comment ça? que voulez-vous dire?

    Il y a plus simple et plus performant que ce que je viens d'écrire comme requête?

    Pour info je lis en parallèle votre lien.

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 673
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 673
    Points : 1 775
    Points
    1 775
    Par défaut
    Citation Envoyé par Sayrus
    Il y a plus simple et plus performant que ce que je viens d'écrire comme requête?
    Pas plus simple ou plus performant.
    Lisez cette partie pour comprendre pourquoi faire les jointures dans le FROM plutôt que dans le WHERE : http://sql.developpez.com/sqlaz/jointures/#L1.2

  9. #9
    Membre confirmé Avatar de Sayrus
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    899
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 899
    Points : 570
    Points
    570
    Par défaut
    Ok c'est clair pour moi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     SELECT * 
    FROM jobs 
     INNER JOIN 
      produits 
       ON jobs.job_produit=produits.produit_id 
    ORDER BY produits.produit_name ASC

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 07/01/2013, 22h45
  2. [MySQL] mysql_fetch_assoc pour 2 tables avec relation 1-1
    Par jiojioforever dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2007, 09h41
  3. faire un ORDER BY sur COUNT(*)
    Par adilou1981 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/05/2005, 11h46
  4. [CR] Comment faire deux order by suivant un parametre?
    Par speed034 dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 15/09/2004, 16h28
  5. Faire un ORDER BY sur un champ
    Par Jeankiki dans le forum Bases de données
    Réponses: 3
    Dernier message: 02/05/2004, 23h59

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