Я знаю, что есть много других SO записей, которые похожи на эту, но я не нашел ни одной, которая действительно отвечает на мой вопрос, так что, надеюсь, один из вас может либо ответить на него, либо указать мне на другой SO вопрос, который .
По сути, у меня есть следующий запрос, который возвращает Venue
s, которые имеют любые CheckIn
s, содержащие искомый Keyword
(в этом примере "foobar").
SELECT DISTINCT v.*
FROM "venues" v
INNER JOIN "check_ins" c ON c."venue_id" = v."id"
INNER JOIN "keywordings" ks ON ks."check_in_id" = c."id"
INNER JOIN "keywords" k ON ks."keyword_id" = k."id"
WHERE (k."name" = 'foobar')
Я хочу SELECT
и ORDER BY
количество совпадений Keyword
для каждого данного Venue
. Например. если было создано 5 CheckIn
s, связанных с этим Keyword
, то должен быть возвращенный столбец (называемый чем-то вроде keyword_count
) со значением 5
, которое отсортировано.
В идеале это должно быть сделано без каких-либо запросов в предложении SELECT
или, желательно, вообще без запросов.
Я боролся с этим некоторое время, и мой разум просто сходит с ума (возможно, это был слишком длинный день), поэтому некоторая помощь будет принята с благодарностью.
Заранее спасибо!