URL: https://linuxfr.org/forums/programmation-sql/posts/dou-que-je-me-trompe Title: D'ou que je me trompe ? Authors: Flavien Date: 2006年10月02日T17:20:42+02:00 Tags: Score: 0 Salut la communauté, 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 ?