Autor | Zpráva | ||
---|---|---|---|
JardaB Profil |
#1 · Zasláno: 25. 1. 2018, 10:30:56
Zdravím, opět bych potřeboval poradit, páč na ty dotazy do MySQL dtb sem fakt slabší, předem moc děkuji
tabulka 'reklama' a sloupce 'id','url','nazev' a tabulka proklik se sloupci 'id', 'id_reklama','time' - sem se zapisují prokliky s id reklamy na kterou bylo kliknuto Potřebuji z tabulky 'reklama' vypsat ty reklamy u kterých se v tabulce 'proklik' nenachází pod 'id_reklama' žádný záznam nebo se tam nachází a záznam 'time' je starší jak 3600 + seřadit dle toho že vypsat prvně záznamy které se v druhé tabulce nenachází a poté až ty co ano a vyhovují stáří 3600s Ve stručnosti chci nabízet do pořadí reklamy, na které ještě nikdo neklikl nebo klikl a je to déle jak hodinu. |
||
Kajman Profil |
Ostatní reklamní systémy naopak upředňostnují reklamy, na které lidi rádi klikají.
Váš přístup je opačný - čím méně zajímavá reklama pro čtenáře, tím časteji ji zobrazíte. Mohlo by to být něco jako select r.id, 0 poradi from reklama r left join proklik p on r.id=p.id_reklama where p.id_reklama is null union all select p.id_reklama, 1 poradi from proklik p group by p.id_reklama having max(p.time)<'2018-01-25 09:40:00' order by poradi |
||
JardaB Profil |
#3 · Zasláno: 25. 1. 2018, 10:45:02
Moc děkuji, mrknu na to a otestuji....
|
||
juriad Profil |
#4 · Zasláno: 25. 1. 2018, 10:50:06
Jakým způsobem ukládáš čas (time), je to DATETIME nebo je to INTEGER?
Jiné řešení: SELECT r.*, pp.last FROM reklama r LEFT JOIN ( SELECT p.id_reklama, MAX(p.time) last FROM proklik p GROUP BY p.id_reklama ) pp ON r.id = pp.id_reklama WHERE pp.last IS NULL OR pp.last < NOW() - INTERVAL 1 HOUR ORDER BY pp.last IS NULL DESC, pp.last ASC JardaB: Prosím, zkus psát trochu civilizovaněji. Čárky ve větách opravdu dělají projev čitelnějším. |
||
JardaB Profil |
Způsobem INTEGER. Pokusím se v projevu příště polepšit...
|
||
Časová prodleva: 6 let
|
0