Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- search with tags
- SELECT "task".*,
- "tags"."id" AS "tags.id",
- "tags"."name" AS "tags.name"
- FROM(
- SELECT
- "task"."id",
- "task"."title",
- "task"."description",
- "task"."authorId",
- "task"."updatedAt"
- FROM
- career_day."Tasks" AS "task" ) AS "task"
- LEFT OUTER JOIN (
- "career_day"."TaskToTag" AS "tags->TaskToTagEntity"
- INNER JOIN "career_day"."Tags" AS "tags"
- ON "tags"."id" = "tags->TaskToTagEntity"."tagId"
- )
- ON "task"."id" = "tags->TaskToTagEntity"."taskId"
- GROUP BY
- "task".id,
- "task".title,
- "task".description,
- "task"."authorId",
- "task"."updatedAt",
- "tags".id,
- "tags".name
- HAVING
- "task".title LIKE '%%'
- OR
- "task".description LIKE '%%'
- ORDER BY "task"."updatedAt" DESC
- -- without tags
- SELECT career_day."Tasks".id, career_day."Tasks".title,
- STRING_AGG(tag_names.name, ', ') AS tag_names
- FROM career_day."Tasks"
- JOIN career_day."TaskToTag" ON career_day."Tasks".id = career_day."TaskToTag"."taskId"
- JOIN career_day."Tags" tag_names ON career_day."TaskToTag"."tagId" = tag_names.id
- WHERE tag_names.name IN ('front-end', 'js')
- GROUP BY career_day."Tasks".id, career_day."Tasks".title
- HAVING COUNT(DISTINCT tag_names.name) = 2
- AND (career_day."Tasks".title LIKE '%%' OR career_day."Tasks".description LIKE '%%');
- -- with tags
- SELECT "task".*,
- "tags"."id" AS "tags.id",
- "tags"."name" AS "tags.name",
- STRING_AGG(tag_names.name, ', ') AS tag_names
- FROM(
- SELECT
- "task"."id",
- "task"."title",
- "task"."description",
- "task"."authorId",
- "task"."updatedAt"
- FROM
- career_day."Tasks" AS "task"
- ) AS "task"
- LEFT OUTER JOIN (
- "career_day"."TaskToTag" AS "tags->TaskToTagEntity"
- INNER JOIN "career_day"."Tags" AS "tags"
- ON "tags"."id" = "tags->TaskToTagEntity"."tagId"
- )
- ON "task"."id" = "tags->TaskToTagEntity"."taskId"
- LEFT JOIN "career_day"."Tags" AS "tag_names" ON "tags->TaskToTagEntity"."tagId" = "tag_names"."id"
- WHERE tag_names.name IN ('front-end')
- GROUP BY
- "task".id,
- "task".title,
- "task".description,
- "task"."authorId",
- "task"."updatedAt",
- "tags".id,
- "tags".name
- HAVING COUNT(DISTINCT tag_names.name) = 1
- AND ("task".title LIKE '%%' OR "task".description LIKE '%%')
- ORDER BY "task"."updatedAt" DESC;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement