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 :

Optimisation de Requête


Sujet :

Requêtes MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Points : 27
    Points
    27
    Par défaut Optimisation de Requête
    Bonjour à tous,

    Je me permets de vous écrire pour que vous m'aidiez à optimiser une requête SQL.

    Je possède 2 tables de produits en vente sur mon site, des bannières et des publi-reportage. A coté, j'ai une table client avec la liste de mes clients. Voici une petite image pour mieux comprendre :



    1) Du coté PHP, j'aimerai afficher un tableau récapitulatif "Reports" de mes produits de ce genre :



    J'ai pensé à un UNION mais j'aimerai être sur que ce soit la bonne façon.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT banners.id AS item_id, banners.fkclient AS fkclient, banners.datec AS datec, banners.frais AS fees, 1 AS type 
    FROM banners
    UNION ALL 
    SELECT publireport.id, publireport.fkclient, publireport.datec, publireport.frais, 2 
    FROM publireport
    ORDER BY datec DESC
    2) Je crée maintenant une table "commercial". J'ajoute une colonne "fkcom" dans la table 'clients' pour lié le commercial à un client.

    J'aimerai ajouté dans mon tableau "Reports" une colonne avec le nom du commercial attaché au client qui a acheté tel ou tel produit.


    Merci d'avance pour votre aide!
    Ilan

  2. #2
    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
    Essaie ceci pour la première partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    SELECT c.name AS Company,
    	CASE
    		WHEN tmp.origin = b THEN 'Banners'
    		ELSE 'Publi-R'
    	END AS Type,
    	tmp.datec AS 'Date',
    	tmp.frais AS Frais
    FROM clients c
    INNER JOIN
    (
    	SELECT b.fkclient, b.datec, b.frais, 'b' AS origin
    	FROM banners b
    	UNION ALL
    	SELECT r.fkclient, r.datec, r.frais, 'r'
    	FROM publireport
    ) tmp ON tmp.fkclient = c.id
    ORDER BY tmp.datec DESC
    2) Je crée maintenant une table "commercial". J'ajoute une colonne "fkcom" dans la table 'clients' pour lié le commercial à un client.

    J'aimerai ajouté dans mon tableau "Reports" une colonne avec le nom du commercial attaché au client qui a acheté tel ou tel produit.
    Il suffit d'ajouter une jointure entre client et commercial.
    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 !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 36
    Points : 27
    Points
    27
    Par défaut
    Merci pour votre réponse.

    La requête fonctionne très bien.

    Par contre j'ai un petit problème. Si un de mes produits (Banners ou PubliR) n'a pas encore été rattaché à un client, j'aimerai qu'il s'affiche quand même dans le tableau en remplaçant le nom du client par "Non rattaché". Voyez-vous ce que je veux dire ?

    2) En ce qui concerne le commercial, j'aimerai une petite aide pour la jointure.
    Voici ma requête me permettant d'avoir un tableau avec seulement les banners vendues.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT b.fkclient AS fkclient, b.datec AS datec, b.frais AS frais FROM banners b ORDER BY datec DESC
    Comment puis-je faire une jointure en affichant le nom du commercial attaché au client dont la bannière est lié ?

Discussions similaires

  1. [Access] Optimisation performance requête - Index
    Par fdraven dans le forum Access
    Réponses: 11
    Dernier message: 12/08/2005, 14h30
  2. Optimisation de requête avec Tkprof
    Par stingrayjo dans le forum Oracle
    Réponses: 3
    Dernier message: 04/07/2005, 09h50
  3. Optimiser une requête SQL d'un moteur de recherche
    Par kibodio dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/03/2005, 20h55
  4. optimisation des requêtes
    Par yech dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/09/2004, 19h03
  5. Optimisation de requête
    Par olivierN dans le forum SQL
    Réponses: 10
    Dernier message: 16/12/2003, 10h09

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