Bonjour à tous,
Ayant deux tables, j'aimerais récupérer tous les éléments se trouvant dans les 2 tables simultanément (intersection et unqiuement l'intersection). Aussi, j'aimerais avoir l'inverse, c'est-à-dire tous les éléments se trouvant dans une table mais pas dans l'autre et uniquement ceux-là (A sans B ou B sans A).
Pour que les choses soient peut-être plus concrètes, voici un schéma des deux tables concernées:
TableA (évènements se produisant)
---------------------------
event | timestamp
---------------------------
A | 2013-02-02 10:02:34
C | 2013-04-02 17:03:14
....
TableB (évènements attendus)
------------------
event | day | time
------------------
A | 1 | 50
B | 3 | 100
....
event ==> clé unique
day ==> 1 = Lundi, 2 = Mardi, ....
time ==> secondes après minuit
1. j'aimerais donc avoir uniquement les évènements qui coïncident entre les deux tables. C'est à dire pour un certain jour de la semaine précis et une certaine heure (secondes après minuit), ai-je bien un évènement (attendu) se produisant en vérité.
2. Inversément, j'aimerais avoir les évènements attendus qui ne se sont pas produits sachant que si un évènement est attendu mercredi à 1h par exemple, c'est le cas pour tous les mercredis de chaque semaine.
1. Voici la query que j'ai, sans être du tout certain qu'elle soit correcte:
2. j'ai du mal à savoir comment extrapoler le fait que si j'ai un évènement se produisant pour lundi 14 et un pour mercredi 16 mais rien pour mardi 15 alors c'est que l'evênement ne s'est pas produit.... Ou peut-être j'ai tout faux, et je dois partir sur une autre idée....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 select a.event from tableA a inner join tableB b on a.event = b.event where b.day = WEEKDAY(a.timestamp)+1 and time_to_sec(a.timestamp) between b.time-30 and b.time+30;
Enfin et juste pour information, je n'ai pas implémenté la base de données ^^.
Voilà j'espère avoir été clair. Un grand merci d'avance à celui qui saura m'éclairer .
Partager