Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.63 KB | None | 0 0
  1. String union_friends =
  2. "CREATE VIEW UNIONED_FRONDS AS " +
  3. "SELECT F1.USER1_ID AS UNIONFRIEND1, F1.USER2_ID AS UNIONFRIEND2 " +
  4. "FROM " + FriendsTable + " F1 " +
  5. "UNION " +
  6. "SELECT F2.USER2_ID, F2.USER1_ID " +
  7. "FROM " + FriendsTable + " F2 ";
  8.  
  9.  
  10. String mutual_friends =
  11. "CREATE VIEW MUTUAL_FRONDS AS " +
  12. "SELECT UF1.UNIONFRIEND1 AS FRIEND1, UF2.UNIONFRIEND1 AS MUTUALFRIEND, UF2.UNIONFRIEND2 AS FRIEND2 " +
  13. "FROM UNIONED_FRONDS UF1, UNIONED_FRONDS UF2 " +
  14. "WHERE UF1.UNIONFRIEND2 = UF2.UNIONFRIEND1 " +
  15. "AND UF1.UNIONFRIEND1 < UF2.UNIONFRIEND2 " +
  16. "AND NOT EXISTS ( " +
  17. "SELECT F1.USER1_ID, F1.USER2_ID " +
  18. "FROM " + FriendsTable + " F1 " +
  19. "WHERE UF1.UNIONFRIEND1 = F1.USER1_ID " +
  20. "AND UF2.UNIONFRIEND2 = F1.USER2_ID " +
  21. ")";
  22.  
  23.  
  24. String order_mutual_friends =
  25. "CREATE VIEW ORDERED_MUTUAL_FRONDS AS " +
  26. "SELECT * " +
  27. "FROM ( " +
  28. "SELECT FMF.FRIEND1 AS FRIEND1, FMF.FRIEND2 AS FRIEND2 " +
  29. "FROM MUTUAL_FRONDS FMF " +
  30. "GROUP BY FMF.FRIEND1, FMF.FRIEND2 " +
  31. "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, FMF.FRIEND1 ASC, FMF.FRIEND2 ASC " +
  32. ")" + " " +
  33. "WHERE ROWNUM <= " + num;
  34.  
  35. //query string
  36. String top_user_pair =
  37. "SELECT U1.USER_ID, U1.FIRST_NAME, U1.LAST_NAME, U2.USER_ID, U2.FIRST_NAME, U2.LAST_NAME " +
  38. "FROM " + UsersTable + " U1, " + UsersTable + " U2, MUTUAL_FRONDS FMF " +
  39. "WHERE U1.USER_ID < U2.USER_ID " +
  40. "AND FMF.FRIEND1 = U1.USER_ID " +
  41. "AND FMF.FRIEND2 = U2.USER_ID " +
  42. "AND (U1.USER_ID, U2.USER_ID) IN ( " +
  43. "SELECT * " +
  44. "FROM ORDERED_MUTUAL_FRONDS " +
  45. ")" + " " +
  46. "GROUP BY U1.USER_ID, U1.FIRST_NAME, U1.LAST_NAME, U2.USER_ID, U2.FIRST_NAME, U2.LAST_NAME " +
  47. "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, U1.USER_ID ASC, U2.USER_ID ASC";
  48.  
  49. String top_mutual =
  50. "SELECT FMF.FRIEND1, FMF.FRIEND2, U3.USER_ID, U3.FIRST_NAME, U3.LAST_NAME " +
  51. "FROM " + UsersTable + " U3, MUTUAL_FRONDS FMF, MUTUAL_FRONDS MF " +
  52. "WHERE MF.MUTUALFRIEND = U3.USER_ID " +
  53. "AND MF.FRIEND1 = FMF.FRIEND1 " +
  54. "AND MF.FRIEND2 = FMF.FRIEND2 " +
  55. "AND (FMF.FRIEND1, FMF.FRIEND2) IN ( " +
  56. "SELECT * " +
  57. "FROM ORDERED_MUTUAL_FRONDS " +
  58. ")" + " " +
  59. "GROUP BY FMF.FRIEND1, FMF.FRIEND2, U3.USER_ID, U3.FIRST_NAME, U3.LAST_NAME " +
  60. "ORDER BY COUNT(FMF.MUTUALFRIEND) DESC, FMF.FRIEND1 ASC, FMF.FRIEND2 ASC, U3.USER_ID ASC";
  61.  
  62. stmt.executeQuery(union_friends);
  63. stmt.executeQuery(mutual_friends);
  64. stmt.executeQuery(order_mutual_friends);
  65.  
  66. Statement stmt0 = oracle.createStatement(FakebookOracleConstants.AllScroll, FakebookOracleConstants.ReadOnly);
  67.  
  68. ResultSet user_pair_info = stmt0.executeQuery(top_user_pair);
  69. ResultSet shared_mutual = stmt.executeQuery(top_mutual);
  70.  
  71. while(user_pair_info.next()) {
  72. UserInfo u1 = new UserInfo(user_pair_info.getLong(1), user_pair_info.getString(2), user_pair_info.getString(3));
  73. UserInfo u2 = new UserInfo(user_pair_info.getLong(4), user_pair_info.getString(5), user_pair_info.getString(6));
  74. UsersPair up = new UsersPair(u1, u2);
  75.  
  76. while (shared_mutual.next() && shared_mutual.getLong(1) == user_pair_info.getLong(1) && shared_mutual.getLong(2) == user_pair_info.getLong(4) ){
  77. UserInfo u3 = new UserInfo(shared_mutual.getLong(3), shared_mutual.getString(4), shared_mutual.getString(5));
  78. up.addSharedFriend(u3);
  79. }
  80.  
  81. shared_mutual.previous();
  82.  
  83. results.add(up);
  84. }
  85.  
  86. stmt.executeQuery("DROP VIEW UNIONED_FRONDS CASCADE CONSTRAINTS");
  87. stmt.executeQuery("DROP VIEW MUTUAL_FRONDS CASCADE CONSTRAINTS");
  88. stmt.executeQuery("DROP VIEW ORDERED_MUTUAL_FRONDS CASCADE CONSTRAINTS");
  89.  
  90. shared_mutual.close();
  91. user_pair_info.close();
  92. stmt0.close();
  93. stmt.close();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement