Salut à tous !
Je désire créer une sorte de fil d'actualité, un peu comme facebook, qui contient l'information de plusieurs table.
Le problème, c'est que je ne sais pas du tout comment rejoindre plusieurs table et les classer par le datetime.
Prenons 2 tables en exemple:
-Users avec les champs created et updated. Le created qui sera fixé à la création du compte et l'updated si il change son mot de passe ou son email.
-Addresses avec les mêmes champs created et updated.
J'ai 2 tables avec 2 champs de date chacun et j'aimerais faire une requête qui me permettrait d'afficher dans l'ordre du temps:
Xavier vient de s'inscrire le XXX
José a ajouté son addresse le XXX
Xavier a mit à jour son profil le XXX
Xavier a ajouté son adresse le XXX
José a mit à jour son profil le XXX
Sargeras vient de s'inscrire le XXX
Xavier a mit à jour son addresse le XXX
Je pense que vous avez compris ce que je désire faire mais je n'ai que très peu d'idée pour pas dire aucune pour le moment donc je m'en remet à vous pour me donner quelque piste afin que je puisse me documenter.
Je développe sur cakephp 3 actuellement au cas où certains auraient des informations liées à me donner même si je devrais pouvoir m'en sortir si je savais comment le faire en language SQL.
Si j'avais une idée, ce serait de faire 4 requêtes différentes jointes avec le UNION mais resterait à savoir comment rendre commun la date à ORDER BY.
J'espère avoir été assez clair dans mon explication :D En tout cas, merci d'avance pour l'éventuel aide que vous pourrez m'apporter !
2 solutions :
Table activity, c'est pas bête !
ça voudrait dire que ma table serait ainsi:
CREATE TABLE IF NOT EXISTS `activity` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_create` int(11) DEFAULT NULL,
`user_update` int(11) DEFAULT NULL,
`address_create` int(11) DEFAULT NULL,
`address_update` int(11) DEFAULT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Chaque entrée aurait donc son idée dans le champs adéquat alors que les autres resteraient null ?
Moi j'ai eu une approche différente en partant du principe qu'un acteur fait une action, mais dans ton cas c'est encore plus simple
user_id
action_at, Date de l'action
action_type, 'address', 'login', '....'
Le truc c'est que ce n'était qu'un exemple plus haut. Je dois aussi afficher l'activité d'autres tables comme le début et la fin d'un évènement