Seřazení článků podle návštěvnosti za poslední týden

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
CZechBoY
Člen | 3608
+
0
-

Zdravím,
potřeboval ybch vypsat všechny články, seřazené podle návštěvnosti za poslední týden.
Takže mám databázi:
`content (content_id, další informace o článku)
week_stat(content_id (FK->content), last_visit, IP)`

Otázky teda zní: Jak toto zapsat v NDBT? Jde to vůbec bez použití query?
Díky za rady.

edit: (Nečekaně) jsem na to po pár minutách po postnutí na forum přišel, ale nevím jestli to nejde nějak líp.

$this->db->table('content')
  ->select('content.*')
  ->select('(SELECT COUNT(content_id) FROM week_stat WHERE content_id = content.content_id AND  last_visit > DATE_SUB(NOW(), INTERVAL 7 DAY)) AS weekStatCount')
  ->order('weekStatCount DESC');

Editoval CZechBoY (6. 9. 2014 2:36)

Felix
Nette Core | 1245
+
0
-

Delam to dost podobne. Jenom s tim, ze ten subquery mam bokem, klidne i jako Selection. IMHO to v NDBT nejde udelat jinak.

CZechBoY
Člen | 3608
+
0
-

To ale udělá hafo dotazů ne?

btw. já založil otázku? to jsem nechtěl… :D

Editoval CZechBoY (6. 9. 2014 11:35)

Felix
Nette Core | 1245
+
0
-

Podle me by nemelo. Jestli se to dobre napise. Nebo musis pouzit view.

CZechBoY
Člen | 3608
+
0
-

Napš mi nějakej nástřel kodu pls. Nevim jak to teda myslíš…

japlavaren
Člen | 404
+
0
-

skus

<?php
$this->db->table('content')
	->select('content.*, COUNT(week_stat.content_id) AS weekStatCount')
	->where('week_stat.last_visit > DATE_SUB(NOW(), INTERVAL 7 DAY)')
	->group('week_stat.content_id')
	->order('weekStatCount DESC');
?>

prip hod niekam dump db, nech to mozem skusit na real datach. kazdy problem ide nejak vyriesit

CZechBoY
Člen | 3608
+
0
-
CREATE TABLE `content` (
  `content_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(50) COLLATE utf8_czech_ci NOT NULL,
  `author_id` int(10) unsigned NOT NULL,
  `slug` varchar(50) COLLATE utf8_czech_ci NOT NULL,
  `description` text COLLATE utf8_czech_ci NOT NULL,
  `src` tinytext COLLATE utf8_czech_ci NOT NULL,
  `category_id` int(10) unsigned NOT NULL,
  `approved` tinyint(3) unsigned NOT NULL DEFAULT '0',
  `date_added` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`content_id`),
  UNIQUE KEY `slug` (`slug`),
  KEY `author_id` (`author_id`),
  KEY `category_id` (`category_id`),
  KEY `approved_date_added` (`approved`,`date_added`),
  CONSTRAINT `content_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `user` (`user_id`),
  CONSTRAINT `content_ibfk_2` FOREIGN KEY (`category_id`) REFERENCES `category` (`category_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;


CREATE TABLE `week_stat` (
  `content_id` int(10) unsigned NOT NULL,
  `last_visit` datetime NOT NULL,
  `IP` varchar(45) COLLATE utf8_czech_ci NOT NULL,
  PRIMARY KEY (`content_id`,`IP`),
  CONSTRAINT `week_stat_ibfk_1` FOREIGN KEY (`content_id`) REFERENCES `content` (`content_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
japlavaren
Člen | 404
+
0
-

a to query, co som ti poslal, nefunguje??