Usando o operador IN no Data Explorer

Olá a todos, notei um comportamento estranho ao editar e executar uma consulta no Explorador de Dados. Estou tentando usar os operadores WHERE e IN para selecionar apenas posts de tópicos em certas categorias:

WHERE
    t.category_id IN (420, 421, 426)

No entanto, não tenho certeza se a condição WHERE funciona como esperado: se eu executar a consulta para períodos anteriores à criação das categorias em questão, ela simplesmente lista todos os tópicos, independentemente da categoria. Além disso, o operador IN não muda de cor, e me pergunto se o Explorador de Dados o reconhece como um operador:

Alguma ideia do que está acontecendo? Muito obrigado!

Hmm. :thinking:

Eu a usei em uma consulta muito semelhante ontem à noite e funcionou como esperado para mim.

Você poderia compartilhar sua consulta completa para que possamos ver se pode haver algo mais em jogo?

1 curtida

Claro, aqui está. A consulta é usada para recuperar as informações necessárias para gerar um arquivo de log personalizado que pode ser processado pelo Gource. Veja: Custom Log Format · acaudwell/Gource Wiki · GitHub

-- Esta consulta recupera uma lista das postagens mais recentes,
-- juntamente com informações associadas do usuário e detalhes do tópico.
-- O resultado é ordenado por data de criação em ordem crescente.

-- Os campos selecionados são os seguintes:
-- timestamp: Um timestamp ISO 8601 ou unix de quando a postagem foi criada.
-- username: O nome de usuário do usuário que criou a postagem.
-- type: Um valor codificado 'A' indicando o tipo de ação (neste caso, 'Adicionado').
-- topic: O ID do tópico ao qual a postagem pertence.
-- post_number: O número único da postagem dentro de seu tópico.
-- reply_to_post_number: O número da postagem à qual esta postagem é uma resposta (se houver).
-- raw: O conteúdo da postagem, limitado aos primeiros 30 caracteres.
-- category_id: O ID da categoria à qual o tópico pertence.

SELECT 
    p.created_at as timestamp, 
    u.username, 
    'A' as type, 
    p.topic_id as topic, 
    p.post_number as post_number, 
    p.reply_to_post_number as reply_to_post_number, 
    SUBSTRING(p.raw, 1, 30) AS raw,
    t.category_id
FROM
    posts p
JOIN
    users u ON p.user_id = u.id
JOIN
    topics t ON p.topic_id = t.id
WHERE
    t.category_id IN (420, 421, 426)
    AND t.created_at > '2022-01-01'
ORDER BY
    p.created_at ASC
LIMIT 1000
1 curtida

Parece que está tudo em ordem.

Quando executo contra as nossas três novas categorias de documentos (criadas há cerca de 10 dias) usando o mesmo AND t.created_at > '2022-01-01', não vejo nenhum dado de fora dessas categorias sendo puxado (muitos posts de pequenas ações, que você pode querer filtrar dependendo do seu caso de uso). Executar sem o AND t.created_at > '2022-01-01' inteiramente também puxa apenas dados dessas categorias.

2 curtidas