|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : décembre 2005 Messages : 11 ![]() |
Bonjour,
J'ai un petit problème pour regrouper des requêtes sous mysql. Voilà, je possède trois tables comme ceci : members(name_member,id_member,key_contact,total_emp) contacts(name_contact,id_contact) redflag(id_record,id_member,date_added) mon objectif est de sortir 6 colonnes: -name_member -id_member -name_contact -total_emp -new_record -total_record Les colonnes name_member, id_member et total_emp sont lisibles directement dans la table members; La colonne name_contact est déterminé en reliant le key_contact de members avec le id_contact de contacts et en lisant name_contact dans contacts. Les deux dernières colonnes me posent cependant problème: -new_record doit sortir le nombre de id_record de chaque id_member sur une période de temps donnée -total_record la même chose sans restriction de temps. J'ai réalisé trois requêtes séparées qui semblent fonctionner; je souhaiterais les réunir en une seule, ce qui ne semble pas facile, j'ai essayé avec des RIGHT JOIN ect, mais je piétine... Pour les 4 premières colonnes: Code :
Code :
Code :
Je vous remercie par avance pour votre aide, bouket |
||||||
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Tony Développeur .NET Inscription : novembre 2010 Messages : 570 ![]() |
edit : mal lu
__________________
Le Porc est un loup pour le Porc. |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 653 ![]() |
bonjour,
Déjà gros problème avec vos jointures, vous faites des produits cartésiens et non des jointures, lisez ceci : http://sqlpro.developpez.com/cours/sqlaz/jointures/ ensuite problème avec vos group by, entre autre vous utilisez une syntaxe qui peut être interprétée n'importe comment par votre SGBD (c'estl a faute à MySql ca) et vous groupez sur des noms et non des id. => que va-t-il se passer quand vous aurez 2 personnes avec le même nom ? lisez ceci : http://sqlpro.developpez.com/cours/sqlaz/ensembles/ Concernant le problème, vous n'êtes pas loin de la solution, qui pourrai être celle-ci : Code :
|
||
|
|
10
|
|
|
#4 | ||||||
![]() ![]() |
1) Les jointures s'écrivent depuis 1992 avec l'opérateur JOIN.
2) Toutes les colonnes du SELECT ne faisant pas l'objet d'une fonction d'aggrégation doivent figurer dans le GROUP BY. 3) J'ose espérer que, contrairement à l'ordre des colonnes affiché dans ton message, les clés primaires des tables sont bien les id et pas les name ? 4) Commençons par le plus simple. Inutile de faire une jointure dans la troisième requête. Code :
Code :
Code :
Grilled by Punkoff qui en plus a pensé au CASE pour ne faire qu'une seule jointure !
__________________
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 ! |
||||||
|
10
|
|
|
#5 |
|
Invité régulier
![]() Inscription : décembre 2005 Messages : 11 ![]() |
merci beaucoup
encore merci ![]()
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com