diff options
Diffstat (limited to 'lib/Bookmarks/M/DB')
-rw-r--r-- | lib/Bookmarks/M/DB/Tags.pm | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/Bookmarks/M/DB/Tags.pm b/lib/Bookmarks/M/DB/Tags.pm index 4ca832a..56ec4fa 100644 --- a/lib/Bookmarks/M/DB/Tags.pm +++ b/lib/Bookmarks/M/DB/Tags.pm @@ -4,20 +4,28 @@ use strict; __PACKAGE__->has_many( links => ['Bookmarks::M::DB::LinksTags' => 'link'] ); -# magari ordiniamoli per popolrità __PACKAGE__->set_sql('related_tags', <<'END_SQL'); -SELECT DISTINCT tags.pk +SELECT DISTINCT tags.pk, tags.name FROM tags, links_tags lt1, links_tags lt2 WHERE tags.pk = lt1.tag AND lt1.link = lt2.link AND lt2.tag = ? AND lt1.tag != lt2.tag +ORDER BY tags.name +END_SQL + +__PACKAGE__->set_sql('name', <<'END_SQL'); +SELECT tags.pk, tags.name, COUNT(links_tags.link) AS how_many + FROM tags LEFT JOIN links_tags + ON tags.pk = links_tags.tag +GROUP BY tags.pk +ORDER BY tags.name END_SQL __PACKAGE__->set_sql('popularity', <<'END_SQL'); SELECT tags.pk, COUNT(links_tags.link) AS how_many - FROM tags, links_tags - WHERE tags.pk = links_tags.tag + FROM tags LEFT JOIN links_tags + ON tags.pk = links_tags.tag GROUP BY tags.pk ORDER BY how_many DESC END_SQL @@ -39,6 +47,10 @@ sub get_all_tags_by_popularity { return $_[0]->search_popularity(); } +sub get_all_tags_by_name { + return $_[0]->search_name(); +} + sub links_sorter($$) { return ($_[1]->access_count || 0) |