Eu sou um novato quando se trata de Postgres e percebo que perguntas semelhantes foram feitas antes, no entanto, estou lutando para fazer essa consulta funcionar:
SELECT p_search.id, count(kia.image_id) AS count
FROM (SELECT id,
keyword,
to_tsvector('english',keyword) AS tskw
FROM keyword) AS p_search
LEFT JOIN keyword_image_assoc AS kia
ON kia.keyword_id = p_search.id
WHERE p_search.tskw @@ plainto_tsquery('english','resident life')
OR p_search.tskw @@ plainto_tsquery('english','wofford')
GROUP BY kia.image_id
ORDER BY count desc
Para contextualizar, tenho três tabelas:
image
que tem umid
como chave primáriakeyword
que temid
como chave primária ekeyword
que é uma string representando uma palavra-chavekeyword_image_assoc
que tem umid
,image_id
ekeyword_id
que é usado para associar imagens e palavras-chave canonicamente.
Se eu adicionar p_search.id
à GROUP BY
cláusula, os resultados não estão corretos - count
é sempre 1. Existe uma maneira de agrupar os resultados para que os image_id
s tenham a contagem do número de palavras-chave correspondentes?
Estou procurando duas colunas count
- o número de palavras-chave correspondentes e image_id
o id da imagem correspondente. Obrigado!