Requête MySQL - SQL/NoSQL - Programmation
Marsh Posté le 01-03-2003 à 17:54:52
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 ???
PS : et visiblement ce bug ne survient pas à tous les coups... j'arrive pas à en trouver la cause.
Marsh Posté le 01-03-2003 à 17:59:02
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 ?
Marsh Posté le 01-03-2003 à 18:43:08
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)...
Marsh Posté le 01-03-2003 à 19:17:38
je suis pas sûr d'avoir compris mais je pense que ça, ça devrait marcher:
select count(*) |
Marsh Posté le 01-03-2003 à 20:35:12
Les sous-requêtes fonctionnent avec Mysql ???
Si oui, alors ta requête est bonne...
Marsh Posté le 01-03-2003 à 20:37:38
ReplyMarsh Posté le 01-03-2003 à 20:47:17
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...
Marsh Posté le 01-03-2003 à 21:41:51
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
Marsh Posté le 01-03-2003 à 23:02:15
Il me semble que MySql connait pas les JOIN...
Je me trompe ?
Marsh Posté le 01-03-2003 à 23:06:21
Thocan a écrit : Il me semble que MySql connait pas les JOIN... |
MySQL sait quand meme faire les join, faut pas deconner non plus
Marsh Posté le 01-03-2003 à 23:07:28
Thocan a écrit : Il me semble que MySql connait pas les JOIN... |
Ouais : http://www.mysql.com/doc/en/JOIN.html
EDIT :
Marsh Posté le 01-03-2003 à 23:10:32
Bon, OK, m'est planté!
En fait, c'est les INNER JOIN qu'il ne comprenait pas ses anciennes versions...
Mea culpa.
Marsh Posté le 01-03-2003 à 23:12:31
Thocan a écrit : Bon, OK, m'est planté! |
C'est quoi la différence entre INNER JOIN et LEFT JOIN
Marsh Posté le 01-03-2003 à 23:18:15
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.
Marsh Posté le 01-03-2003 à 23:22:53
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.
Marsh Posté le 01-03-2003 à 23:27:30
Non. Ca ne change rien.
Je pige po là...
Pas de message d'erreur, rien. Il me zappe juste la page.
Marsh Posté le 01-03-2003 à 23:28:25
Elle renvoie quoi la requête ? Peut être qu'il n'y a pas de résultat (résultat avec 0 lignes)
Marsh Posté le 01-03-2003 à 23:28:31
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) ? |
Le 1er cas.
Les deux méthodes semblent fonctionner, mais ça plante dans des cas particuliers et je ne comprends pas pourquoi.
Marsh Posté le 01-03-2003 à 23:30:01
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.
Marsh Posté le 01-03-2003 à 23:34:16
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...
Marsh Posté le 01-03-2003 à 23:49:43
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...
Merci à ceux qui m'ont aidé dans ma difficile quête...
Marsh Posté le 27-02-2003 à 22:01:31
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...
Merci d'avance