Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Výpis prvků z DB - pomoc s dotazem

Ahoj, potřeboval bych pomoct se sestavením mysql dotazu:

Mám tabulku visitor kde ukládám informace o návštěvníkovy stránek:

id, ip,...,date_access;

a já bych potřeboval vypsat ta ID, kde jejich IP byla v daný den vícekrát než třeba 5x.

Už jsem si sestavil sql dotaz, který mi vyjede ip čka, ale teď bych k tomu potřeboval naroubovat to načtení ID:

SELECT DATE_ACCESS, IP, COUNT(IP) AS pocet_vyskytu 
FROM visitor 
GROUP BY IP HAVING pocet_vyskytu > 5
AND DAY(DATE_ACCESS) = 13 AND MONTH(DATE_ACCESS) = 5
ORDER BY pocet_vyskytu DESC;

a teď potřebuji nějak udělat:

SELECT ID FROM visitor WHERE IP IN (ten-seznam-IP-z-výše-uvedeného-DB-dotazu) AND DAY(DATE_ACCESS) = 13 AND MONTH(DATE_ACCESS) = 5;

Díky za pomoc...

Předmět Autor Datum
už jsem na to asi přišel, ale nevím jestli to je správně = čistě...Zda to nejde nějak třeba lépe...:…
n.u.r.v. 14.05.2014 13:37
n.u.r.v.
Vôbec nepočítaš s tým, že by si mal v tabuľke aj nejaké hodnoty z minulého roka. Teraz ti to môže fu…
los 14.05.2014 20:58
los
Díky, s tím datem (rok) máš pravdu...to jsem nepočítal..Akorát do podmínky date_access<'2014-05-14'…
n.u.r.v. 15.05.2014 11:10
n.u.r.v.
Čas sa nemusí doplniť - keď nie je uvedený, tak sa berie ako 0:00:00. poslední
los 15.05.2014 17:41
los

už jsem na to asi přišel, ale nevím jestli to je správně = čistě...Zda to nejde nějak třeba lépe...:

SELECT ID FROM visitor WHERE IP IN (
SELECT v1.IP FROM (
	( 
	SELECT DATE_ACCESS, IP, COUNT(IP) AS pocet_vyskytu 
	FROM visitor 
	GROUP BY IP HAVING pocet_vyskytu > 5
	AND DAY(DATE_ACCESS) = 13 AND MONTH(DATE_ACCESS) = 5
	ORDER BY pocet_vyskytu DESC
	) AS v1
)
) AND DAY(DATE_ACCESS) = 13 AND MONTH(DATE_ACCESS) = 5;

Vôbec nepočítaš s tým, že by si mal v tabuľke aj nejaké hodnoty z minulého roka. Teraz ti to môže fungovať, ale neskôr to bude problém.

Napísal by som to nejako takto:

select id from visitor
where date_access>='2014-05-13' and date_access<'2014-05-14'
and ip in (
	select ip from visitor
	where date_access>='2014-05-13' and date_access<'2014-05-14'
	group by ip having count(*)>5
);

Zpět do poradny Odpovědět na původní otázku Nahoru