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

MySQL Discussion :

Selectionné par la derniere date de création


Sujet :

MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut Selectionné par la derniere date de création
    Bonjour à tous,

    J’essaie de sélectionner le dernier 'mail_type_id' (et ça date d’envoi ) envoyé à mes utilisateurs par la date.

    Ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    user_id | mail_type_id | date_envoi
    23130 | 47	| 2015-07-13 21:57:02
    23130 | 48	| 2015-07-13 23:59:02
    La req sur la quelle je bloque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT *,MAX(date_envoi) AS date_envoi FROM `mail_auto` WHERE `user_id`='23130' AND (`mail_type_id` = '47' OR `mail_type_id` = '48' OR `mail_type_id` = '49' OR `mail_type_id` = '50' ) GROUP BY user_id
    Je pense que je ne suis pas loin mais cela ne passe pas.

    Il me sort :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    client_id | mail_type_id | date_envoi | date_envoi
    23130 | 47 | 2015-07-13 21:57:02 | 2015-07-13 23:59:02
    Deux fois la date d'envoi.

    Merci pour votre aide.

    Pablo

  2. #2
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 121
    Points : 83 910
    Points
    83 910
    Billets dans le blog
    15
    Par défaut
    Bonsoir

    Quelque chose comme ceci :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT user-id, mail-type-id,MAX(date_envoi) AS date_envoi FROM mail_auto GROUP BY user_id;
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    Fait me fait un meilleur sort

    mais il prend pas le dernier envoi

    il me retourne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    23130 	47 	2015-07-13 21:57:02
    J'ai essayer avec MIN aussi mais non

    Il aurai fallu

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    23130 	48 	2015-07-13 23:59:02

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 121
    Points : 83 910
    Points
    83 910
    Billets dans le blog
    15
    Par défaut
    Ceci devrait fonctionner :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT user-id, mail-type-id,MAX(date_envoi) AS date_envoi FROM mail_auto GROUP BY user_id, mail-type-id;
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    J'avoue que je ne comprend pas .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT `user_id`,`mail_type_id`,MAX(date_envoi) AS date_envoi FROM mail_auto GROUP BY `user_id`, `mail_type_id`;
    Me renvoie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    user_id 	|mail_type_id 	|date_envoi
    1	|42	|2015-07-14 17:56:45
    23130	| 47	|2015-07-13 21:57:02
    23130	|48	|2015-07-13 23:59:02
    Soit toujours tout les derniers mail qui ont été envoyé.

    J'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select max(`date_envoi`) from mail_auto where `user_id` = 23130
    Ca me renvoie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    max(`date_envoi`)
    2015-07-13 23:59:02
    Donc OK bien le dernier envoie au user

    J'ai voulue rajouter le mail type comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select `mail_type_id`, max(`date_envoi`) from mail_auto where `user_id` = 23130
    et là ca me renvoie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    user_id 	mail_type_id 	max(`date_envoi`)
    23130 	47 	2015-07-13 23:59:02
    Ca me prend le le mail type 47 alors que celui si a été envoyé bien plus tôt

    Extrait de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     mail_type_id date_envoi
    47	2015-07-13 21:57:02
    Je comprend pas pourquoi il me "fusionne" deux lignes


    J'ai vérifié la structure de ma base tout semble ok, mais cela vient peut être de là

  6. #6
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 121
    Points : 83 910
    Points
    83 910
    Billets dans le blog
    15
    Par défaut
    Voici ton code modifié :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT user-id, MAX(mail_type_id), MAX(date_envoi) AS DernierEnvoi FROM mail_auto
    GROUP BY user-id;
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    Le MAX(mail_type_id) marche dans ce cas car le mail type 48 est partie en dernier

    mais quand je fait un teste en modifiant 48 par 46 il me ressort encore un mixte

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    mail_type_id 	DernierEnvoi
    42 	2015-07-14 17:56:45
    47 	2015-07-13 23:59:02
    La bonne heure mais pas le bon mail_type

    j'ai fait beaucoup de req dans ma vie de dev, et je ne comprend pas pourquoi une requette aussi simple que :

    'Sélectionne moi le dernier mail type envoyé à un user et pour savoir le quel s'est tu n'as qu'a prendre la date d'envoi'

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 71
    Points : 72
    Points
    72
    Par défaut
    Après de longue recherche j'ai enfin trouvé pour mon cas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT  `mail_type_id`, `date_envoi`
    FROM   mail_auto
    WHERE  `mail_id`=(SELECT MAX(`mail_id`)
                  FROM mail_auto WHERE `user_id`='23130')
    Pablo

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 14/05/2007, 00h14
  2. Réponses: 5
    Dernier message: 18/04/2007, 12h22
  3. [VBA-E]ouvrir un fichier dont le nom est determiné par sa date de création
    Par olivertwist dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 17/04/2007, 18h29
  4. Réponses: 2
    Dernier message: 13/07/2006, 18h01
  5. Batch - Choisir un fichier par date de création
    Par Lorponos dans le forum Windows
    Réponses: 10
    Dernier message: 07/05/2006, 19h19

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