8710 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai un souci pour écrire une requête.

J'ai une table qui comporte les événements liés à des sociétés.
Par exemple :

id | id_societe | str_fin
1 | 12 | 1414796400
2 | 5 | 1414583200
3 | 12 | 1414364400
4 | 9 | 1414796300

ma requete est :

$ladatedujour= date('d-m-Y H:i:s');
$timestampdujour = strtotime($ladatedujour);


$evenement = 'SELECT id, id_societe, str_fin FROM evenements WHERE str_fin >= "'.$timestampdujour.'"  group by id_societe  order by str_fin ASC';


Je voulais que cette requête me retourne la ligne 3 pour la société 12, la ligne 2 pour la société 5 et enfin la ligne 4 pour la société 9

En d'autres termes, je veux afficher 1 événement par société. L'événement à afficher est celui qui comporte le str_fin le plus petit.


Le problème est que la requête "zap" l'instruction order by str_fin. ça me retourne un tableau classé par id ascendant (soit ligne 1 puis ligne 2...) et non pas par str_fin ascendant...

Quelqu'un voit-il d'où peut provenir mon erreur ?
Modifié par pareto (24 Oct 2014 - 17:41)
Bonjour,

Je viens de faire exactement la même requête que toi ;
SELECT id, id_societe, str_fin FROM test where `str_fin`>='1414161538' group by id_societe  order by str_fin ASC

; ma table est structurée comme la tienne sauf peut être les types et j'obtiens

2|5
4|9
1|12

Le souci vient peut être de ton calcul de ton timestamp ? essaie d'afficher ta requête pour le consulter et tester en PHPMyAdmin.
Merci, je pense avoir réussi avec

$evenement = 'SELECT * FROM (select * from evenements where visible="oui" order by str_fin asc) as ma_table_temp where str_fin >= "'.$timestampdujour.'"  group by id_societe ';



Après plusieurs essais avec cette requête, il semble bien que c'est celle-ci qu'il me fallait.
Modifié par pareto (24 Oct 2014 - 17:40)