Advertisement
fatalryuu

Untitled

Oct 31st, 2023 (edited)
1,303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- search with tags
  2.         SELECT "task".*,
  3.         "tags"."id" AS "tags.id",
  4.         "tags"."name" AS "tags.name"
  5.         FROM(
  6.         SELECT
  7.             "task"."id",
  8.             "task"."title",
  9.             "task"."description",
  10.             "task"."authorId",
  11.             "task"."updatedAt"
  12.         FROM
  13.             career_day."Tasks" AS "task" ) AS "task"
  14.         LEFT OUTER JOIN (
  15.             "career_day"."TaskToTag" AS "tags->TaskToTagEntity"
  16.             INNER JOIN "career_day"."Tags" AS "tags"
  17.             ON "tags"."id" = "tags->TaskToTagEntity"."tagId"
  18.         )
  19.         ON "task"."id" = "tags->TaskToTagEntity"."taskId"  
  20.         GROUP BY
  21.             "task".id,
  22.             "task".title,
  23.             "task".description,
  24.             "task"."authorId",
  25.             "task"."updatedAt",
  26.             "tags".id,
  27.             "tags".name
  28.         HAVING
  29.             "task".title LIKE '%%'
  30.         OR
  31.             "task".description LIKE '%%'   
  32.         ORDER BY "task"."updatedAt" DESC
  33. -- without tags
  34.         SELECT career_day."Tasks".id, career_day."Tasks".title,
  35.         STRING_AGG(tag_names.name, ', ') AS tag_names
  36.         FROM career_day."Tasks"
  37.         JOIN career_day."TaskToTag" ON career_day."Tasks".id = career_day."TaskToTag"."taskId"
  38.         JOIN career_day."Tags" tag_names ON career_day."TaskToTag"."tagId" = tag_names.id
  39.         WHERE tag_names.name IN ('front-end', 'js')
  40.         GROUP BY career_day."Tasks".id, career_day."Tasks".title
  41.         HAVING COUNT(DISTINCT tag_names.name) = 2
  42.         AND (career_day."Tasks".title LIKE '%%' OR career_day."Tasks".description LIKE '%%');
  43. -- with tags       
  44.         SELECT "task".*,
  45.         "tags"."id" AS "tags.id",
  46.         "tags"."name" AS "tags.name",
  47.         STRING_AGG(tag_names.name, ', ') AS tag_names
  48.         FROM(
  49.         SELECT
  50.             "task"."id",
  51.             "task"."title",
  52.             "task"."description",
  53.             "task"."authorId",
  54.             "task"."updatedAt"
  55.         FROM
  56.             career_day."Tasks" AS "task"
  57.         ) AS "task"
  58.         LEFT OUTER JOIN (
  59.             "career_day"."TaskToTag" AS "tags->TaskToTagEntity"
  60.             INNER JOIN "career_day"."Tags" AS "tags"
  61.             ON "tags"."id" = "tags->TaskToTagEntity"."tagId"
  62.         )
  63.         ON "task"."id" = "tags->TaskToTagEntity"."taskId"
  64.         LEFT JOIN "career_day"."Tags" AS "tag_names" ON "tags->TaskToTagEntity"."tagId" = "tag_names"."id"
  65.         WHERE tag_names.name IN ('front-end')
  66.         GROUP BY
  67.             "task".id,
  68.             "task".title,
  69.             "task".description,
  70.             "task"."authorId",
  71.             "task"."updatedAt",
  72.             "tags".id,
  73.             "tags".name
  74.         HAVING COUNT(DISTINCT tag_names.name) = 1
  75.         AND ("task".title LIKE '%%' OR "task".description LIKE '%%')
  76.         ORDER BY "task"."updatedAt" DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement