Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2952 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête MySQL

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête MySQL

n°319832
Thocan
La loi du silence
Posté le 27-02-2003 à 22:01:31  profilanswer
 

Bonjour à tous,
 
J'ai actuellement un souci concernant une requête que je veux effectuer sous MySQL et je ne sais comment m'y prendre.
 
Voilà la situation :
J'ai une table où je renseigne les centres de profit, les consultants qui y sont rattachés et ceux qui les managent...
En gros :
4 champs
 
id    |   user   |   centre de profit   |   responsable (oui/non)
0001     robert           1                        1
0002     yves             1                        0
0003     georges          1                        0
0004     alexandre        2                        0
0005     sophie           2                        1
etc.
 
But de la requête :
Je veux pouvoir calculer le nombre de consultants qui sont sous la responsabilité d'un gars donné ($user)
Pour détecter le manager du centre de profit, c'est donc :
user = $user AND responsable = '1'
Si possible, je ne veux pas que le responsable soit comptabilisé dans ses effectifs.
Un gars peut être manager de plusieurs centres de profit.
Un consultant, s'il est présent dans plusieurs centres de profit, doit être pris en compte une seule fois.
 
Voilà...
Pour le moment, tous mes essais ont échoué.
Alors s'il y a des dieux du sql ici...   :D  
 
Merci d'avance :jap:

mood
Publicité
Posté le 27-02-2003 à 22:01:31  profilanswer
 

n°320804
Thocan
La loi du silence
Posté le 01-03-2003 à 17:15:08  profilanswer
 

Personne n'a une petite idée ?  :sweat:

n°320815
Thocan
La loi du silence
Posté le 01-03-2003 à 17:54:52  profilanswer
 

Bizarre, la requête suivante semble fonctionner :
 
"Select count(distinct table1.user) as count from table1, table2 WHERE table1.gbid = table2.gbid AND table2.user = $user AND table2.gresp = '1' AND table1.user <> $user"
 
où table1 = table2
bid = centre de profit
gresp = responsable
 
Mais lorsque il y a un centre de profit sans que le $user soit responsable, tout plante (ma page ne s'affiche plus. aucun message d'erreur)
Bug mysql ou pb de requête ???
 :cry:
 
PS : et visiblement ce bug ne survient pas à tous les coups... j'arrive pas à en trouver la cause. :??:


Message édité par Thocan le 01-03-2003 à 17:57:51
n°320818
trueslash
(╯°□°)╯︵ MMM
Posté le 01-03-2003 à 17:59:02  profilanswer
 

j'ai pas bien compris ce qu'il y avait dans centre de profit :/
 
edit: c'est le nombre de centre ou un id de centre ?


Message édité par trueslash le 01-03-2003 à 17:59:28
n°320867
Thocan
La loi du silence
Posté le 01-03-2003 à 18:43:08  profilanswer
 

c'est juste l'id...
 
En gros, cette table permet de connaîre quels gars travaillent dans quels centres de profit et qui, parmis eux, en est le manager (responsable)...


Message édité par Thocan le 01-03-2003 à 18:44:10
n°320875
trueslash
(╯°□°)╯︵ MMM
Posté le 01-03-2003 à 19:17:38  profilanswer
 

je suis pas sûr d'avoir compris mais je pense que ça, ça devrait marcher:  
 

select count(*)
from taTable
where responsable = 0
and centre_de_profit in (select centre_de_profit
                         from taTable
                         where user = $user
                         and responsable = 1)

n°320907
Thocan
La loi du silence
Posté le 01-03-2003 à 20:35:12  profilanswer
 

Les sous-requêtes fonctionnent avec Mysql ???
Si oui, alors ta requête est bonne...


Message édité par Thocan le 01-03-2003 à 20:37:30
n°320908
gloop
Posté le 01-03-2003 à 20:37:38  profilanswer
 

Thocan a écrit :

Les sous-requêtes fonctionnent avec Mysql ???


à partir de la 4.1

n°320909
Thocan
La loi du silence
Posté le 01-03-2003 à 20:40:58  profilanswer
 

Oki,
je vais tester ça.
Merci.  :jap:

n°320911
Thocan
La loi du silence
Posté le 01-03-2003 à 20:47:17  profilanswer
 

Hmmm... Visiblement, la 4.1 c'est la toute dernière version bêta... ?
Donc ça va pas le faire, faut que je trouve autre chose...

mood
Publicité
Posté le 01-03-2003 à 20:47:17  profilanswer
 

n°320933
mrbebert
Posté le 01-03-2003 à 21:41:51  profilanswer
 

Peut être quelque chose dans ce genre :
 
SELECT t1.user, t1.centre, count(*)
FROM nomTable as t1
LEFT JOIN nomTable AS t2 ON t1.centre = t2.centre
WHERE t1.responsable > 0
   AND t1.user <> t2.user
GROUP BY t1.centre, t1.user


Message édité par mrbebert le 01-03-2003 à 21:42:40
n°320947
Thocan
La loi du silence
Posté le 01-03-2003 à 23:02:15  profilanswer
 

Il me semble que MySql connait pas les JOIN...
Je me trompe ?

n°320948
gloop
Posté le 01-03-2003 à 23:06:21  profilanswer
 

Thocan a écrit :

Il me semble que MySql connait pas les JOIN...
Je me trompe ?


MySQL sait quand meme faire les join, faut pas deconner non plus  :lol:

n°320949
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 01-03-2003 à 23:07:28  profilanswer
 

Thocan a écrit :

Il me semble que MySql connait pas les JOIN...
Je me trompe ?


Ouais : http://www.mysql.com/doc/en/JOIN.html
[:boidleau]
 
EDIT : [:grilled]


Message édité par Taiche le 01-03-2003 à 23:07:46

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°320950
Thocan
La loi du silence
Posté le 01-03-2003 à 23:10:32  profilanswer
 

Bon, OK, m'est planté!  :D  
En fait, c'est les INNER JOIN qu'il ne comprenait pas ses anciennes versions...
 
Mea culpa.  :ange:

n°320951
mrbebert
Posté le 01-03-2003 à 23:12:31  profilanswer
 

Thocan a écrit :

Bon, OK, m'est planté!  :D  
En fait, c'est les INNER JOIN qu'il ne comprenait pas ses anciennes versions...
 
Mea culpa.  :ange:  

C'est quoi la différence entre INNER JOIN et LEFT JOIN :??:

n°320955
Thocan
La loi du silence
Posté le 01-03-2003 à 23:18:15  profilanswer
 

Marrant (enfin... non, pas vraiment) : cette requête fonctionne comme celle que j'avais postée au tout début.
Et j'obtiens exactement les mêmes bugs dans les mêmes cas.
C'est vraiment bizarre.
 
Je vais tester une autre version de mysql, histoire de voir.

n°320957
mrbebert
Posté le 01-03-2003 à 23:22:53  profilanswer
 

Tu veux le nombre de consultants seulement pour un responsable donné, ou le nombre de consultants par responsable (en considérant tous les responsables) ?
J'essayais de répondre au 1er cas, mais le 2ème doit être plus simple.

n°320958
Thocan
La loi du silence
Posté le 01-03-2003 à 23:27:30  profilanswer
 

Non. Ca ne change rien.
Je pige po là...  :??:  
 
Pas de message d'erreur, rien. Il me zappe juste la page.

n°320959
mrbebert
Posté le 01-03-2003 à 23:28:25  profilanswer
 

Elle renvoie quoi la requête ? Peut être qu'il n'y a pas de résultat (résultat avec 0 lignes)

n°320960
Thocan
La loi du silence
Posté le 01-03-2003 à 23:28:31  profilanswer
 

mrBebert a écrit :

Tu veux le nombre de consultants seulement pour un responsable donné, ou le nombre de consultants par responsable (en considérant tous les responsables) ?
J'essayais de répondre au 1er cas, mais le 2ème doit être plus simple.


 
Le 1er cas.
 
Les deux méthodes semblent fonctionner, mais ça plante dans des cas particuliers et je ne comprends pas pourquoi.

n°320961
Thocan
La loi du silence
Posté le 01-03-2003 à 23:30:01  profilanswer
 

mrBebert a écrit :

Elle renvoie quoi la requête ? Peut être qu'il n'y a pas de résultat (résultat avec 0 lignes)


 
La requête renvoie un nombre.
Mais le bug est que, dans certains cas, toute la page (php) est zappée à patir de la ligne de code de la requête.

n°320965
Thocan
La loi du silence
Posté le 01-03-2003 à 23:34:16  profilanswer
 

Ex :  
J'ai une dizaine de ligne dans ma table, et mon user sélectionné est responsable de deux centres de profit.
Il est également membre (sans être responsable) d'un troisième centre.
La requête fonctionne.
 
Je modifie une ligne en transformant mon user en simple membre d'un de ses centres (un des deux où il était auparavant responsable).
-> La page plate :
- pas de message d'erreur
- plus rien est affiché à partir de la requête (dans le code php)
 
La, vraiment, je pige po...  :??:
 
 
PS : la deuxième requête renvoie un résultat faux mais le bug survient de la même manière...


Message édité par Thocan le 01-03-2003 à 23:39:00
n°320981
Thocan
La loi du silence
Posté le 01-03-2003 à 23:49:43  profilanswer
 

Bon.
Ca y est, j'ai trouvé :
 
J'avais un enregistrement donc l'id - théoriquement incrémenté - était supérieur à son suivant (dans phpMyAdmin)
ex :
1
2
10  
7
8
 
Pourquoi ? Sans doute une erreur de manip...
En attendant, ça m'a pris 2j de boulot, cette connerie...  :fou:  
 
Merci à ceux qui m'ont aidé dans ma difficile quête...  :)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Requête MySQL

 

Sujets relatifs
[MySQL] Pb de tri avec une requete.[Concours] Votre Requête MySQL la plus complexe
[Php/MySQL] Bp retour à la ligne sur resultat requetepb requête MySQL Help !!!
[php & mysql] Requête simple, mais pb[PHP/mysql] lancer une requete avec un bouton ...
MySQL Pourquoi ma requete elle fonctionne pas?[mySQL] Problème de requête avec count(*) [résolu]
[PHP] Amélioration de requete PHP/MySQLMySQL + REQUETE DELETE AVEC IMBRICATION !!!! HELP !!!!!!!
Plus de sujets relatifs à : Requête MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR