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

Requêtes MySQL Discussion :

ORDER BY complexe [MySQL-5.0]


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Par défaut ORDER BY complexe
    Bonjour,

    Voici la description de mon problème :

    J'ai une table "clients" sur laquelle je fais des extractions plus ou moins complexes (JOIN + UNION).
    Jusque-là pas de problème.

    Cette table est liée par son id à d'autres tables "achat" ex achat_meubles, achat_chaises etc...

    Mon problème est que je dois trier mes clients suivant le maximum de leur achats sur la totalité des tables achats.
    En résumé les meilleurs acheteurs apparaissent en premier.

    Merci pour votre aide !!!

  2. #2
    Membre éclairé Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Par défaut
    Bonjour,
    Je crois que tu devrais montrer déjà un peu de ce que tu as fait ..
    Et la structure ( simplifiée ) des tables..

    Car là, personne ne pourra t'aider avec les infos que tu donnes.

  3. #3
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Par défaut
    bon si tu le dis !

    table : clients
    champs : idC nom adresse ...

    plusieurs tables achat... (différent nombre de colonnes mais 3 champs identiques)

    ex :
    table : achat_meubles
    champs : id idC prix

    table : achat_chaises
    champs : id idC prix

    Voila c'est plus clair ?
    Mon problème est que je dois trier mes clients suivant le maximum de leur achats sur la totalité des tables achats.
    En résumé les meilleurs clients apparaissent en premier.

  4. #4
    Membre éclairé Avatar de camyo
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2004
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Juin 2004
    Messages : 400
    Par défaut
    Je dis peut-être une bêtise, mais je pense qu'un truc comme ça pourrait marcher ... À optimiser !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
        (SELECT SUM(`prix`) FROM `achat_meubles` WHERE achat_meubles.idC = Clients.idC)
        +
        (SELECT SUM(`prix`) FROM ` achat_chaises` WHERE achat_chaises.idC= Clients.idC)
    AS `total_achats`
    FROM Clients, achat_meubles, achat_chaises
    ORDER BY `total_achats` ASC

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Par défaut
    Merci camyo je vais tester ça !

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2014
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2014
    Messages : 10
    Par défaut
    C'est cool merci... mais subsiste un problème que je n'arrive pas à résoudre !!!

    Voici la requête simplifiée optimisée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $query_best_client ="
    		SELECT DISTINCT(officiel.idO) ,
    		((SELECT SUM(tarif_pub) FROM infos_evenement WHERE infos_evenement.idO = officiel.idO)
    		+
    		(SELECT SUM(tarif_pub) FROM infos_gala WHERE  infos_gala.idO = officiel.idO))
    		AS total_pub		
    		FROM officiel, infos_evenement, infos_gala		
    		ORDER BY total_pub DESC , nomInsti DESC
    		";
    Or cela ne fonctionne que si les 2 sous SELECT renvoient une valeur !

    Vraiment incompréhensible... quoi que ... un nombre + rien = rien pour MySql semble-t-il

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

Discussions similaires

  1. SQL, ORDER BY assez complexe
    Par FtF Nemesis dans le forum VBA Access
    Réponses: 8
    Dernier message: 24/05/2011, 15h33
  2. order by assez complexe (pour moi en tout cas :) )
    Par eldrad95 dans le forum Langage SQL
    Réponses: 7
    Dernier message: 07/12/2009, 11h03
  3. ORDER BY complexe
    Par pekka77 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 03/10/2006, 11h33
  4. Réponses: 7
    Dernier message: 07/04/2003, 09h35
  5. ORDER BY dans un ordre inhabituel
    Par Riam dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 21/03/2003, 13h29

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