Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/11/2011, 11h48   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 35
Points : 10
Points : 10
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 :
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
Ilan55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2011, 15h32   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 333
Points : 18 333
Envoyer un message via MSN à CinePhil
Essaie ceci pour la première partie :
Code :
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
Citation:
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 09h38   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2008
Messages : 35
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 35
Points : 10
Points : 10
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 :
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é ?
Ilan55 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h37.


 
 
 
 
Partenaires

Hébergement Web