Sélection php selon plusieurs critères

Résolu
t671 Messages postés 1478 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1478 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Ma base contient des noms, et des dates (naissance et décès) sous différent format (jj.mm.aaaa, ou <jj.mm.aaaa, ou vers aaaa, .....). Je me base sur l'année (aaaa) pour gérer et rechercher des dates.

Je veux afficher les noms (affiché selon la première lettre) , avec l'année (aaaa) la plus petite et la plus grande selon une fourchette d'année.

Si j'écris ceci (sans la fourchette de l'année recherchée), ça fonctionne :
$select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date, MAX( RIGHT(date_dc, 4) ) AS datedc FROM ville_bis WHERE nom LIKE "'.mysql_real_escape_string(A).'%" GROUP BY nom ORDER BY nom ASC';


Mais main,tenent, je n'arrive pas inclure dans la requête la fourchette de l'année recherchée. J'ai essayé ceci
$select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) > AS date > "1599", MAX( RIGHT(date_dc, 4) ) AS datedc < "1801" FROM ville_bis WHERE nom LIKE "'.mysql_real_escape_string(A).'%" GROUP BY nom ORDER BY nom ASC';

mais il y a une erreur de syntaxe
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS date > "1599", MAX( RIGHT(date_dc, 4) ) AS datedc < "1801" FROM ville_b' at line 1


Comment faire ???

Merci.

4 réponses

  1. bissdebrazza Messages postés 2886 Statut Contributeur 712
     
    Salut!

    Essai avec ça:

    $select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) > AS date  BETWEEN "1599", AND MAX( RIGHT(date_dc, 4) ) AS datedc "1801" FROM ville_bis WHERE nom LIKE "'.mysql_real_escape_string(A).'%" GROUP BY nom ORDER BY nom ASC';
    
    
    
    0
  2. t671 Messages postés 1478 Date d'inscription   Statut Membre Dernière intervention   11
     
    Merci pour ton aide, mais j'ai l'erreur Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS date BETWEEN "1599", AND MAX( RIGHT(date_dc, 4) ) AS datedc "1801" FROM vill' at line 1


    Snifffffffffff ...........
    0
  3. bissdebrazza Messages postés 2886 Statut Contributeur 712
     
    $select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date  BETWEEN "1599", AND MAX( RIGHT(date_dc, 4) ) AS datedc "1801" FROM ville_bis WHERE nom LIKE "'.mysql_real_escape_string(A).'%" GROUP BY nom ORDER BY nom ASC';
    
    
    0
  4. t671 Messages postés 1478 Date d'inscription   Statut Membre Dernière intervention   11
     
    Ben non .... Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'BETWEEN "1599", AND MAX( RIGHT(date_dc, 4) ) AS datedc "1801" FROM ville_bis WHE' at line 1


    J'ai essayé
    $select = 'SELECT nom,COUNT(*) AS nb, MIN( RIGHT(date_naissance, 4) ) AS date BETWEEN "1599" AND "1801", AND MAX( RIGHT(date_dc, 4) ) AS datedc BETWEEN "1599" AND "1801" FROM ville_bis WHERE nom LIKE "'.mysql_real_escape_string(A).'%" GROUP BY nom ORDER BY nom ASC';}
    

    mais c'est pareil, ça fonctionne pas .........
    0