Substr et order by
Résolu
t671
Messages postés
1476
Date d'inscription
Statut
Membre
Dernière intervention
-
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
t671 Messages postés 1476 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je veux faire un select dans ma bd sur des dates, en sélectionnant une fourchette min et max des 4 derniers caractères qui correspondent à l'année, et trier le résultat dans l'ordre ASC pour afficher ces dates dans l'ordre ASC.
Je bute sur le tri :
En faisant ainsi, mes dates ne sont pas triées.
Comment faire ?
Merci.
Je veux faire un select dans ma bd sur des dates, en sélectionnant une fourchette min et max des 4 derniers caractères qui correspondent à l'année, et trier le résultat dans l'ordre ASC pour afficher ces dates dans l'ordre ASC.
Je bute sur le tri :
$select = 'SELECT date_naissance FROM ville_bis WHERE lieu LIKE "%'.$village.'%" AND (SUBSTRING(date_naissance, -4) > "1599" AND SUBSTRING(date_naissance, -4) < "1801") ORDER BY (SUBSTRING(date_naissance, -4) > "1599" AND SUBSTRING(date_naissance, -4) < "1801") ASC'; $result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() ); ........................ while ($row = mysql_fetch_array($result)) { echo '<tr>'; echo '<td>'.$row['date_naissance'].'</td>'; ....................
En faisant ainsi, mes dates ne sont pas triées.
Comment faire ?
Merci.
A voir également:
- Substr et order by
- By click downloader avis - Forum Enregistrement / Traitement audio
- Ads by cooking ✓ - Forum Virus
- Order@live-helper.com - Forum Consommation & Internet
- Files by google - Accueil - Applications & Logiciels
- Photos liked by ne fonctionne plus - Forum Facebook
3 réponses
Bonjour,
Moi je vais partir du principe que t'as un attribut Date dans ta base et pas un simple varchar, comme ça t'aura une solution viable. Si jamais ce n'est pas le cas, je ne peux que te conseiller (très fortement) de rectifier le tir.
Moi je vais partir du principe que t'as un attribut Date dans ta base et pas un simple varchar, comme ça t'aura une solution viable. Si jamais ce n'est pas le cas, je ne peux que te conseiller (très fortement) de rectifier le tir.
SELECT date_naissance FROM ville_bis WHERE lieu LIKE "%'.$village.'%" AND date_naissance BETWEEN '01/01/1579' AND '31/12/1854' ORDER BY date_naissance ASC;
Bonjour
Déjà, tu n'aurais pas ce problème si tes champs date_naissance étaient de type date. Si le type date existe, ce n'est pas pour rien.
Ta table étant ce qu'elle est, la date est dans SUBSTRING(date_naissance, -4). Alors pourquoi faire cet ORDER bizarre au lieu de faire simplement ORDER BY SUBSTRING(date_naissance, -4) ? Une condition d'un WHERE n'a a priori aucun rapport avec un ordre de tri, ce sont deux choses complètement indépendantes.
Déjà, tu n'aurais pas ce problème si tes champs date_naissance étaient de type date. Si le type date existe, ce n'est pas pour rien.
Ta table étant ce qu'elle est, la date est dans SUBSTRING(date_naissance, -4). Alors pourquoi faire cet ORDER bizarre au lieu de faire simplement ORDER BY SUBSTRING(date_naissance, -4) ? Une condition d'un WHERE n'a a priori aucun rapport avec un ordre de tri, ce sont deux choses complètement indépendantes.