Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Dans ma base, un enregistrement comporte le nom, la date de naissance (sous forme jj.mm.aaaa, ou aaaa, ou >aaaa, ou ~aaaa, .......).
Je veux afficher les noms commençant par "A". S'il y a plusieurs fois le même nom, je n'en affiche qu'un. Je veux également afficher le nombre de nom identique, et la date de naissance minimum en me basant sur l'année. C'est sur ce dernier critère que je pêche !!!!
Comme le fiormat des dates est différent, je pense que le mieux est de se baser sur l'année (aaaa), soit les 4 derniers caractères du champs. Mais ce que j'ai fait me sort la première année lue du premier enregistrement du nom similaire, et non la plus petite année.
Merci de m'aider à trouver mon erreur ...........
Dernière modification par t14 (25-09-2011 16:46:18)
Hors ligne
Bonsoir,
J'ai bien peur que .... tout soit faux.
Petite question. Ton champ date_naissance est-il de type DATE?
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Saluton,
Je ne pense pas que la colonne date_naissance soit de type DATE, malheureusement.
Mais ce n'est pas le seul problème.
Cette utilisation de la clause GROUP BY fait fi de la dépendance fonctionnelle qui existe entre les colonnes d'une ligne d'une table. Rien ne permet d'assurer que la ligne correspondant à MIN(date_naissance) sera la même que celle retournée par RIGHT(date_naissance, 4).
Je sais, ça surprend toujours les débutants, mais la clause GROUP BY est à utiliser avec prudence, notamment avec MySQL, qui se montre très laxiste dans son implémentation.
Par ailleurs, comme la colonne date_naissance m'a tout l'air d'être de type CHAR ou VARCHAR MIN(date_naissance) a peu de chance de retourner la plus ancienne.
Autrement dit, Jc a amplement raison, c'est tout faux tout pourrave ce code.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Pages :: 1