Um es einfach alle Menschen nehmen zu erleichtern, die totay besucht und suchen Sie nach einen Besuch in den letzten 7 Tagen und wenn man Rückkehr der letzte Tag der Besuch gefunden. Ich denke, dieser Ansatz ist einfacher zu verstehen:
select b.`hash` ,
audience.last_visit
from behaviour b
inner join (select v.`hash`, max(v.timestamp) as last_visit from audience v
where DATE(v.timestamp) between date_sub(current_date, interval 7 day) and
date_sub(current_date, interval 1 day)
group by v.`hash`) as audience
on(b.`hash` = audience.`hash`)
where DATE(b.timestamp) = CURDATE();
- wir eine Auswahl kommen, dass die Informationen besteht bereits von uns (letzten Besuch pro Hash während der letzten 7 Tage) benötigen.
Die Anzahl der Zeilen ist die Zahl der Besucher zurück, die Ihre Seite heute besucht und während der letzten Woche.
Sie können auch von Ihrem wählen Sie zählen die Anzahl Sie suchen als Abfrageergebnis zu erhalten:
select count(*) from
(select b.`hash` ,
audience.last_visit
from behaviour b
inner join (select v.`hash`, max(v.timestamp) as last_visit from audience v
where DATE(v.timestamp) between date_sub(current_date, interval 7 day) and
date_sub(current_date, interval 1 day)
group by v.`hash`) as audience
on(b.`hash` = audience.`hash`)
where DATE(b.timestamp) = CURDATE()) as my_visitors;
- Testdata
drop table if exists your_schema.behaviour;
create table your_schema.behaviour(`hash` varchar(255), `timestamp` timestamp) ;
insert into your_schema.behaviour
values ('ab','2016-05-23'),('ac','2016-05-23');
drop table if exists your_schema.audience;
create table your_schema.audience (`hash` varchar(255), `timestamp` timestamp) ;
insert into your_schema.audience
values ('ab','2016-05-01'),('ab','2016-05-02'),('ab','2016-05-03'),('ab','2016-05-04'),('ab','2016-05-21'),('ab','2016-05-23'),
('ac','2016-05-01'),('ac','2016-05-02'),('ac','2016-05-03'),('ac','2016-05-04'),('ac','2016-05-21'),('ac','2016-05-23'),
('ad','2016-05-01'), ('ad','2016-05-02'), ('ad','2016-05-03'),('ad','2016-05-04'),('ad','2016-05-21'),('ad','2016-05-23');
Es wäre hilfreich sein, etwas unter http einrichten : //mysqlfiddle.com mit einigen Beispieldaten. – miken32
Es ist schwierig, die Abfrage zu korrigieren, ohne zu wissen, was die Tabellen enthalten. Fügen Sie also die Tabellenbeschreibungen, einige Beispieldaten (verwenden Sie einfach 1,2,3, ... für 'Hash' und einige Zeitstempel für beide Tabellen) und die erwarteten hinzu Ergebnis dafür. Wenn ich raten müsste: "Publikum" = Liste der ersten Besuche, "Verhalten" = Seitenbesuche dieser Nutzer?Dann nimmt Ihre 'Gruppe nach Ansichten' das Datum der Registrierung/des ersten Besuchs an (und unterscheidet sich somit nicht zwischen Besuchsdaten) - Sie müssen wahrscheinlich nur' b.timestamp' zu Ihrer 'distinct' dann hinzufügen. Aber bitte fügen Sie einfach die fehlenden Informationen hinzu, damit wir nicht raten müssen. – Solarflare
Hallo, bist du mit meiner Antwort zufrieden? Ich würde mich freuen, Feedback von Ihnen zu erhalten. – iLikeMySql