IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

requete sql étonnante [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut requete sql étonnante
    bonjour,

    j'ai une requete de type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql5= "select numemission from m ORDER BY numemission DESC LIMIT 0,1";//ou bien ORDER BY numemission DESC LIMIT 0,1
    $result5 = mysql_query($sql5) or die("Requete pas comprise");
    $row5=mysql_fetch_array($result5);
    $numemiss=$row5[0];
    echo $numemiss;
    le numemission de type 1/2010
    2/1010...
    10/2010
    ...

    cette requete me renvoi toujours 9/2010
    et non pas les insertions après le 9/2010
    j'ai essayé aussi select max(numemission)....
    la meme chose
    pourriez vous m'aidez

  2. #2
    Membre éprouvé
    Inscrit en
    Décembre 2009
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 80
    Par défaut
    Si par exemple tes entrées sont :
    1/2010
    2/2010
    9/2010
    10/2010
    11/2010
    1/2011

    En fait l'ordre demandé sera un ordre alpha-numérique, or 9 est plus grand que 1 donc 9/2010 est plus "grand" que 12/2010 ou encore 1/2011

    En conclusion pour avoir l'ordre que tu attends, il faudrait que tes numemission soient du genre :
    2010/01
    2010/02
    2010/09
    2010/10
    2010/11
    2011/01

  3. #3
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    non je peux pas mettre l'année avant
    il faut qu'il soit numero/année

    1/2010
    ...
    10/2010
    11/2010


    j'ai essayé ça aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql5= 'select * from m where numemission='.mysql_insert_id() ;
    $result5 = mysql_query($sql5) or die("Requete pas comprise");
    $row5=mysql_fetch_array($result5);
    $numemiss=$row5[0];
    echo $numemiss;
    il m'envoi rien
    et si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $sql5= 'select LAST_INSERT_ID() from m' ;
    $result5 = mysql_query($sql5) or die("Requete pas comprise");
    $row5=mysql_fetch_array($result5);
    $numemiss=$row5[0];
    echo $numemiss;
    il m'envoi 0 pourtant j'ai des enregistrements

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    LAST_INSERT_ID ou mysql_insert_id (qui sont équivalents) ne fonctionneront pas puisqu'ils renvoient le dernier id généré (champ auto-incrémenté) lors d'une insertion sur la même "connexion". Or, ici, il n'y a aucune insertion.

    +1 pour OlgarK : en l'état, si vous voulez vraiment effectuer ce tri lors de vos requêtes il vous faudra utiliser les fonctions du SGBD. Par exemple (en ASC) :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... ORDER BY CAST(SUBSTRING_INDEX(`champ`, '/', -1) AS SIGNED), CAST(SUBSTRING_INDEX(`champ`, '/', 1) AS SIGNED)
    Ou encore :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    ... ORDER BY YEAR(STR_TO_DATE(`champ`, '%c/%Y')), MONTH(STR_TO_DATE(`champ`, '%c/%Y'))
    (non testé)

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    merci pour la réponse,
    mais j'ai pas bien compris le tri

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... ORDER BY CAST(SUBSTRING_INDEX(`champ`, '/', -1) AS SIGNED), CAST(SUBSTRING_INDEX(`champ`, '/', 1) AS SIGNED)
    j'ai écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql5= "select numemission from m  ORDER BY CAST(SUBSTRING_INDEX(`numemission`, '/', -1) AS SIGNED), CAST(SUBSTRING_INDEX(`numemission`, '/', 1) AS SIGNED) ";
    il me renvoi 4/2010
    alors que il faut qu'il me renvoi 10/2010

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Il faut remettre DESC au niveau des ORDER, je suppose, c'est en ASC là, comme je l'ai précisé plus haut.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème Requete SQL et QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 7
    Dernier message: 07/01/2004, 09h31
  2. Prob de requete sql et variable
    Par agent-zaizai dans le forum ASP
    Réponses: 11
    Dernier message: 21/10/2003, 16h54
  3. requete sql
    Par autumn319 dans le forum ASP
    Réponses: 22
    Dernier message: 10/09/2003, 16h46
  4. Paramètre requete SQL (ADOQuery)
    Par GaL dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/07/2002, 11h24
  5. Resultat requete SQL
    Par PierDIDI dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/07/2002, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo