Blocos de código postados pelos usuários em uma categoria

Às vezes, temos requisitos de outras equipes internas para pesquisar certas informações. Esta consulta foi útil para encontrarmos o que precisávamos.

-- [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 curtidas

Não tenho certeza se você está exportando esses dados, mas se você os estiver usando no explorador de dados, um dos truques interessantes que adoro usar para todas as consultas baseadas em usuários é o parâmetro user_id, que oferece uma caixa de entrada de consulta super 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 variação também inclui a mágica AS post_id para transformar p.id em um link utilizável nos resultados exibidos na tela, além de expandir o parâmetro de categoria para permitir todas ou várias categorias (0 para todas, ou uma lista separada por vírgulas para várias. ex. 4, 5, 6).

Esta parece relativamente rápida, mas também há esta dica para um método alternativo para pesquisar palavras-chave:

4 curtidas
  1. Esse seletor de ID de usuário é incrível!
  2. Existe um seletor para categoria também?

Atualizei minha consulta original com isso! Na verdade, usei o construtor SQL da IA do Discourse para me ajudar a conseguir isso. Tem sido uma experiência incrível que me economizou provavelmente 4-5 horas toda semana.

3 curtidas

Você também pode estendê-lo para lidar com uma versão de lista de usuários, se desejar ter várias. Ex:\n\nsql\n-- [params]\n-- user_list :users\n\nSELECT \n id AS user_id,\n created_at \nFROM users \nWHERE id IN (:users)\n\n\nHá um pouco mais de informação sobre alguns dos outros parâmetros mágicos aqui - https://meta.discourse.org/t/utilizing-parameters-in-data-explorer-queries/277934\n\nExiste um parâmetro category_id e group_id, embora eles não sejam tão elegantes quanto o user_id, onde você obtém uma caixa de seleção (eles funcionam digitando o nome e ele o converte magicamente para o id). Eles ainda podem ser bastante úteis.\n\n(Além disso, outra informação geralmente útil que pode ajudar a refinar algumas das consultas assistidas por IA é Common Discourse data tips)

1 curtida