카테고리 내 사용자 게시 코드 블록

때때로 다른 내부 팀으로부터 특정 정보를 검색해 달라는 요청을 받습니다. 이 쿼리를 통해 필요한 정보를 찾는 데 도움이 되었습니다.

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT 
    p.id AS post_id,
    p.raw, 
    p.created_at, 
    p.topic_id  
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'

이 데이터를 내보내는지 확실하지 않지만, 데이터 탐색기 내에서 사용 중이라면 모든 사용자 기반 조회에 유용한 멋진 트릭 중 하나인 user_id 매개변수를 강력히 추천합니다. 이 매개변수는 매우 간편한 조회 입력 상자를 제공합니다:

-- [params]
-- user_id :user
-- int_list :category_ids = 0

SELECT 
    p.id AS post_id,
    p.raw, 
    p.created_at, 
    p.topic_id  
FROM posts p
WHERE p.user_id = :user
  AND p.topic_id IN (
    SELECT t.id
    FROM topics t
    WHERE (':category_ids' = 0 OR t.category_id IN (:category_ids))
      AND t.archetype <> 'private_message'
      )
  AND p.raw LIKE '%```%'

이 변형은 화면 결과에서 p.id를 사용 가능한 링크로 변환하는 AS post_id 마법도 포함하며, 카테고리 매개변수를 확장하여 전체 또는 여러 카테고리를 허용합니다 (0은 전체, 쉼표로 구분된 목록은 여러 카테고리, 예: 4, 5, 6).

이 쿼리는 비교적 빠른 성능을 보이지만, 키워드를 검색하는 대체 방법에 대한 팁도 있습니다:

  1. 그 사용자 ID 선택기가 정말 훌륭해요!
  2. 카테고리용 선택기도 있나요?

이 내용으로 원래의 쿼리를 업데이트했어요! 실제로 Discourse AI의 SQL 빌더를 사용해 이 작업을 수행했습니다. 매주 4~5시간 정도를 절약해 주는 놀라운 경험이었습니다.

원하는 경우 사용자 목록 버전으로 확장하여 여러 항목을 처리할 수도 있습니다. 예:

-- [params]
-- user_list :users

SELECT 
    id AS user_id,
    created_at 
FROM users 
WHERE id IN (:users)

여기에는 다른 마법 매개변수에 대한 추가 정보가 있습니다 - Using Parameters in Data Explorer Queries

category_id와 group_id 매개변수도 있지만, 선택 상자가 제공되는 user_id 매개변수만큼 세련되지는 않습니다(이것은 이름을 입력하면 자동으로 ID로 변환되는 방식으로 작동합니다). 그럼에도 불구하고 여전히 꽤 유용할 수 있습니다.

(또한, AI 지원 쿼리를 정교하게 만드는 데 도움이 될 수 있는 일반적인 유용한 정보는 Common Discourse data tips 입니다)