Pitit problème de requête SQL... Voici le describe de ma table (MySQL 4.1.16 sous FC4):
mysql> describe cli_suivi_dossier;
+-----------------+-------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------------------+----------------+
| csd_id | int(11) | | PRI | NULL | auto_increment |
| do_id | int(11) | | MUL | 0 | |
| fsi_id | smallint(6) | YES | MUL | NULL | |
| op_id | smallint(6) | | MUL | 0 | |
| ut_code | varchar(6) | | MUL | | |
| pr_id | char(3) | | MUL | | |
| csd_date | datetime | | | 0000-00-00 00:00:00 | |
| csd_rappel | datetime | YES | | NULL | |
| csd_priorite | tinyint(1) | | | 0 | |
| me_id | int(11) | YES | MUL | NULL | |
| rsd_id | char(3) | | MUL | CRE | |
| csd_comment | text | YES | | NULL | |
| csd_flag_moteur | tinyint(1) | | | 0 | |
+-----------------+-------------+------+-----+---------------------+----------------+
Il y plusieurs csd_id pour un do_id donné. Je veux à chaque fois récupérer le plus grand csd_id avec un 'MAX(csd_id)' et un 'GROUP BY do_id'. Tant que je n'utilise pas la clause WHERE je récupère bien le plus grand mais dès que j'y rajoute quelque chose je récupère que la 1ere ligne de mon groupement.
Voilà la requête que j'aimerais faire fonctionner:
SELECT D.csd_id, D.csd_date, D.do_id,D.ut_code,D.op_id, D.rsd_id, U.ss_id, C.do_domicile, csd_flag_moteur FROM cli_suivi_dossier AS D, cli_dossier AS C, usr_sessions AS U WHERE ((D.ut_code='153') OR (rsd_id='CRE')) AND U.ut_code='153' AND csd_flag_moteur=0 AND C.do_id=D.do_id AND U.op_id=D.op_id GROUP BY do_id ORDER BY csd_date;
Pour simplifier mon problème, dans la 1ere requête qui sui le MAX fonctionne et pas dans la deuxième :
Marche:
SELECT MAX(D.csd_id), D.csd_date, D.do_id,D.ut_code,D.op_id, D.rsd_id FROM cli_suivi_dossier AS D GROUP BY do_id
Marche pas:
SELECT MAX(D.csd_id), D.csd_date, D.do_id,D.ut_code,D.op_id, D.rsd_id FROM cli_suivi_dossier AS D WHERE ((D.ut_code='153') OR (rsd_id='CRE')) GROUP BY do_id
Quelqu'un peut il éclairer ma lanterne ?
# Particularité de MySQL
Posté par DocteurCosmos . Évalué à 3.
Le résultat est indéterminé (indéterminable).
C'est un problème connu.
# Having
Posté par elloco (site web personnel) . Évalué à 1.
SELECT MAX(D.csd_id), D.csd_date, D.do_id,D.ut_code,D.op_id, D.rsd_id FROM cli_suivi_dossier AS D HAVING ((D.ut_code='153') OR (rsd_id='CRE')) GROUP BY do_id
ça marche ?
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.