Partage
  • Partager sur Facebook
  • Partager sur Twitter

sql/phpmyadmin récupérer la date la plus récente

Sujet résolu
4 novembre 2019 à 16:30:19

bonjour, 

je souhaite récupérer la date la plus récente mais mon code récupère la première entrée selon l'id

tableA et tableB

mon code actuel est :

SELECT A.colonne_A , A.colonne_B, A.colonne_C, B.colonne_date FROM table_a A INNER JOIN  table_b B ON A.colonne_F = B.colonne_8 WHERE A.colonne_C = :input ORDER BY B.colonne_date DESC
 


 fetch récupère la première entrée et donc pas la date

  et fetchAll ne retourne qu'un résultat dans un tableau 2 dimensions de la première entrée et donc pas la date

mais la requête sql 

SELECT * FROM `table_b` WHERE `colonne_3`=11 AND `colonne_7`=37 ORDER BY`reponse_date` DESC

donne 

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2019 à 17:30:14

Bonjour,

Ta question est impossible à comprendre ... Toi, tu connais ton projet, mais nous, non ...

Ton projet est-il si confidentiel que tu ne puisses pas nous dire de quoi parle-t-on ?

Peux-tu nous donner un exemple de données de la table A et de la table B, et le résultat attendu avec cet exemple ?

Sinon, fetch et fetchAll sont des méthodes PHP (PDO) qui n'ont rien à voir avec un problème de SQL ... nous somme bien d'accord ?

-
Edité par Benzouye 4 novembre 2019 à 17:30:24

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
4 novembre 2019 à 17:46:34

bon ben j'y vais . 

Nous sommes bien d'accords mais j'en ai parlé puisque normalement, sauf erreur de ma part, je devrais récupérer un table comme ça 

array(3){

[0]=>array(5){blablabla}

[1]=>array(5){blablabla}

[2]=>array(5){blablabla}

}

pour être plus précis ,

il y a des topics! 

lesquels on peut commenter

un utilisateur peut commenter plusieurs fois le même topic, mais comme pour le site openclassroom, il doit y avoir un délais entre les deux commentaires du même utilisateur sur un topic. 

donc il faudrait que je récupère la date la plus récente parmis les commentaires afin de calculer le délais et autoriser ou non le commentaire, mais lors de ma requête je récupère le premier commentaire selon l'id, j'ai modifié l'id  d'un des commentaires du même utilisateur pour le même topic, je l'ai mis plus petit que celui du premier commentaire, et je récupère la date du premier id qu'il rencontre avec la condition respecté. 

$req = $bdd->prepare('SELECT COUNT(id_reponse), T.id_user, T.title, T.detail, R.reponse_date FROM topics T INNER JOIN reponses R ON R.post=T.id_topic WHERE post=:topic AND user=:user ORDER BY R.reponse_date DESC');
$req -> bindValue(':topic', $_GET['topic'], PDO::PARAM_STR);
$req -> bindValue(':user', $_SESSION['user'], PDO::PARAM_STR);
$req -> execute();



-
Edité par born1 4 novembre 2019 à 17:48:30

  • Partager sur Facebook
  • Partager sur Twitter
4 novembre 2019 à 18:12:01

born1 a écrit:

il faudrait que je récupère la date la plus récente parmis les commentaires afin de calculer le délais et autoriser ou non le commentaire

La requête serait :

SELECT MAX( reponse_date )
FROM reponses R
WHERE
	post=:topic
	AND user=:user

Et c'est quoi cette requête avec un COUNT sans GROUP BY ?

-
Edité par Benzouye 4 novembre 2019 à 18:12:51

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
4 novembre 2019 à 18:33:56

le problème est bien lié à COUNT parce que sans, cela fonctionne et avec ORDER BY reponse_date DESC. 

avant de me faire allumer ben la fonction COUNT je ne vais pas expliquer à quoi elle sert mais j'en avais besoin , et ici on ne parle pas de l'association avec group by ou que très peu. 

mais sinon merci pour le temps accordé

  • Partager sur Facebook
  • Partager sur Twitter
5 novembre 2019 à 9:25:34

born1 a écrit:

la fonction COUNT je ne vais pas expliquer à quoi elle sert mais j'en avais besoin

C'est dommage car tu ne comprendras pas le fonctionnement des fonctions d'agrégat.

On aurait pu croire ici que tu voulais compter le nombre de commentaire d'un topic ... juste par curiosité, est-ce que cette requête te plaît :

SELECT
	COUNT(id_reponse) AS nb_reponses,
	MAX(reponse_date) AS max_date,
	T.id_user,
	T.title,
	T.detail
FROM
	topics T
		INNER JOIN reponses R
			ON R.post=T.id_topic
WHERE
	post=:topic
	AND user=:user
GROUP BY
	T.id_user,
	T.title,
	T.detail
ORDER BY max_date DESC

Elle te retourne la liste des topics où un user donné à répondu, le nombre de ses réponses et la date de la dernière réponse.

  • Partager sur Facebook
  • Partager sur Twitter
Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL