X-Git-Url: http://mop.ddnsfree.com/gitweb/?p=brisk.git;a=blobdiff_plain;f=sql%2Fsql.d%2F075-users-network.sql;h=cf108c0a9da81bd1a74a96852eb207a39d897a16;hp=8d4fca4c325c24f34346f16814dce65916dd97b2;hb=dc35e3289fd4266bb12ed7c6ec5beab02c1a48de;hpb=f5a85bccf9d99d8489cb57f88f3b2c4ad69ae9c3 diff --git a/sql/sql.d/075-users-network.sql b/sql/sql.d/075-users-network.sql index 8d4fca4..cf108c0 100644 --- a/sql/sql.d/075-users-network.sql +++ b/sql/sql.d/075-users-network.sql @@ -32,12 +32,19 @@ CREATE VIEW #PFX#usersnet_wideskill DROP VIEW #PFX#usersnet_narrowskill; CREATE VIEW #PFX#usersnet_narrowskill - AS SELECT un.owner, ur.target, SUM(ur.skill * un.trust) / SUM(un.trust) as skill, count(*) as count - FROM #PFX#usersnet AS un, #PFX#usersnet AS ur -- 'un' primary records, 'ur' inheriting records - WHERE un.target = ur.owner AND un.friend = 5 -- 'un' is, at least, our friend - GROUP BY un.owner, ur.target; + AS SELECT un.owner AS owner, ur.target AS target, SUM(ur.skill * un.trust) / SUM(un.trust) AS skill, + COUNT(*) AS count, + SUM(CASE WHEN ur.friend = 1 THEN 1 ELSE 0 END) AS black -- count number of friend + -- blacklisting the target + FROM #PFX#usersnet AS un, #PFX#usersnet as ur + WHERE un.target = ur.owner AND un.friend = 5 -- ur owner must be bbf of un.owner + GROUP BY un.owner, ur.target HAVING SUM(CASE WHEN ur.friend = 1 THEN 1 ELSE 0 END) = 0; --- DROP VIEW #PFX#usersnet_allfriends; --- CREATE VIEW #PFX#usersnet_allfriends --- AS SELECT un.owner, ur.target FROM #PFX#usersnet AS un, #PFX#usersnet AS ur --- WHERE +DROP VIEW #PFX#usersnet_party; +CREATE VIEW #PFX#usersnet_party + AS (SELECT ns.* FROM #PFX#usersnet_narrowskill AS ns + -- all except targets managed directly by the owner + WHERE target NOT IN (SELECT target FROM #PFX#usersnet WHERE owner = ns.owner) + UNION ALL + (SELECT owner, target, skill, 1 AS count, 0 AS black FROM #PFX#usersnet + WHERE friend > 2)) ORDER BY target;