Bloques de código publicados por el usuario en una categoría

A veces tenemos requisitos de otros equipos internos para buscar cierta información. Esta consulta nos resultó útil para encontrar lo que necesitábamos.

-- [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 '%```%'
5 Me gusta

No estoy seguro de si está exportando estos datos, pero si los está utilizando dentro del explorador de datos, uno de los trucos ingeniosos que me encanta usar para todas las búsquedas basadas en usuarios es el parámetro user_id, que le brinda un cuadro de entrada de búsqueda súper fácil:

-- [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 '%```%'

Esta variación también incluye la magia AS post_id para convertir p.id en un enlace utilizable en los resultados en pantalla, además de expandir el parámetro de categoría para permitir todas o varias categorías (0 para todas, o una lista separada por comas para varias. por ejemplo, 4, 5, 6).

Este parece relativamente rápido, pero también existe este consejo para un método alternativo para buscar palabras clave:

4 Me gusta
  1. ¡Ese selector de ID de usuario es increíble!
  2. ¿Hay también un selector para la categoría?

¡He actualizado mi consulta original con esto! En realidad, utilicé el generador de SQL de Discourse AI para ayudarme a lograr esto. Ha sido una experiencia increíble que me ha ahorrado probablemente 4-5 horas cada semana.

3 Me gusta

También puedes extenderlo para manejar una versión de lista de usuarios si deseas tener varias. Por ejemplo:

-- [params]
-- user_list :users

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

Hay un poco más de información sobre algunos de los otros parámetros mágicos aquí: Utilizing Parameters in Data Explorer Queries

Existe un parámetro category_id y group_id, aunque no son tan geniales como el de user_id, donde obtienes un cuadro de selección (funcionan escribiendo el nombre y mágicamente lo convierte al id). Aún así, pueden ser bastante útiles.

(Además, otra información generalmente útil que puede ayudar a refinar algunas de las consultas asistidas por IA es Common Discourse data tips)

1 me gusta