Page 1 sur 1
[Résolu] requete avec tout plein de liaisons difficiles entr
Posté : 13 janv. 2009, 18:30
par kaking
bonjour tous le monde.
'oilou, j'ai la requete suivante concernant mes deux tables 'clients' et 'service'
Code : Tout sélectionner
SELECT *
FROM clients
JOIN (
SELECT DISTINCT date_relance_service, id_user
FROM service
) td
ON clients.id=td.id_user
un client peut avoir plusieurs services.
or je veux selectionner autant de fois les clients qu'ils ont de service .
Si le client Pierre possede 2 services qui ont tous les deux une date_relance_differente, je veux selectionner Pierre 2 fois.... c'est ce que permets la requete...
maintenant, j'aimerais selectionner le client Pierre 2 fois s'il possede 2 service a la date_relance_service differents ET selectionner aussi les date_relance_service et le champs nom du service aussi...
mais je sais pas comment faire...... une idee pour un pauvre gars desesperé siouplais?
d'avance merci

Posté : 13 janv. 2009, 22:39
par furiouslol
Salut
C'est plus simple quand on a les schema des tables (sous forme de create table), mais j'me lance et j'imagine qu'un truc comme ca peut te faire avancer
Code : Tout sélectionner
SELECT clients.*, service.date_relance_service, service.id_user
FROM clients
JOIN service ON clients.id=service.id_user
Posté : 14 janv. 2009, 09:24
par kaking
^^ desole, je vais m'appliquer, mais ta requete ne prends pas en compte la date_relance_service.....
il faut selectionner autant de fois le client qu'il possede de services, si ses services ont une date_relance_service differentes!
si monsieur durand(ayant l'id 1) possede 3 services ayant ces specificités :
id-----------------id_user--------------date_relance_service----------------nom
5---------------------1---------------------01/01/09----------------------------commercial
6---------------------1---------------------01/01/09----------------------------bureautique
7---------------------1---------------------05/08/09----------------------------secretairiat
il faut qu'il soit selectionné 2 fois -ca c'est la requete actuelle qui fait ca-enfin je crois
maintenant je voudrais en meme temps selectionner la date relance service et le nom du service.....
comment faire siouplais? merci!
Posté : 14 janv. 2009, 12:03
par furiouslol
ok moi je veux bien mais comment tu vas afficher le nom du service alors que tu fais un distinct sur deux lignes qui ont un nom de service différent ?
J'm' explique en reprennant ton exemple
id-----------------id_user--------------date_relance_service----------------nom
5---------------------1---------------------01/01/09----------------------------commercial
6---------------------1---------------------01/01/09----------------------------bureautique
7---------------------1---------------------05/08/09----------------------------secretairiat
tu veux selectionner les lignes qui ont une date relance différente, mais tu veux aussi en afficher le nom, alors dans ce cas une requete qui ferait ca te reverrait une ligne avec secretariat, et une avec commercial, ou burautique, sans que tu maitrise lequel des deux sera choisit, c'est illogique mais est ce vraiment ce que tu veux ?
Sinon ma requete etait jsute une piste pour simplifier ta jointure, tu fais une jointure sur une table formée par une sous requete, tu n'a pas besoin de ca
Posté : 14 janv. 2009, 12:30
par kaking
=D> bien vu pour le nom service, faut pas l'afficher.....
mais QUELLE REQUETE FAUT pour afficher ce que je veux -sans le nom service donc, mais avec les date_relance_service ?
Posté : 14 janv. 2009, 17:52
par Truc
Modération :
kaking, merci d'utiliser un titre clair et qui correspond bien à ta demande.
Les titres contenant "HELP !", "Aidez-moi", "J'ai un problème", "Ça marche pas",...
n'apportent rien à la compréhension de ta demande.
Par ailleurs, nous savons déjà par ton message que tu as besoin d'aide.
Tu peux corriger ton titre en éditant ton premier message.
Merci de prendre le temps de lire les règlements.
Posté : 14 janv. 2009, 19:14
par furiouslol
Un petit distinct sur ma requete et c'est bon non ?
Code : Tout sélectionner
SELECT clients.*, DINSTINCT(service.date_relance_service)
FROM clients
JOIN service ON clients.id=service.id_user
Posté : 14 janv. 2009, 19:18
par kaking
j'ai trouvé un autre moyen-egal a peu pres a ce que tu me propose mais plus lisible pour mysql...
Code : Tout sélectionner
mysql_query("CREATE TEMPORARY TABLE dist_serv AS SELECT DISTINCT date_relance_service, id_user FROM service") or die(mysql_error());
je créé dabord une table ou ce trouve ce que je veux prendre de la table service : une date relance service unique par id_user
puis je lie les tables comme ceci :
Code : Tout sélectionner
SELECT c.*,ds.* FROM clients c INNER JOIN dist_serv ds ON c.id=ds.id_user
et 'oilou! ca me donne autant de client qu'il a de date_relance differentes
merci beaucoup de votre aide

Posté : 14 janv. 2009, 19:25
par furiouslol
Si tu veux prendre des détours hein, c'est toi qui voit
