Используйте заказ из другого пункта выбора
Вопрос
Так что я на самом деле пытаюсь достичь, так это фильтр наиболее проголосовавших в истории. Истории сохраняются в одном столе, и все голоса в другом.
У меня есть это утверждение, чтобы получить правильный заказ столбца VID:
SELECT vid, COUNT(id) AS votecnt
FROM votes
WHERE status = 1
GROUP BY vid
ORDER BY votecnt DESC
А потом я должен сам фильтровать истории, и я хочу, чтобы это было заказано так же, как в первом пункте.
SELECT vid, body, timestamp
FROM stories
WHERE lv = 1
AND status = 1
Дело в том, что это порядок, который мне нужен, потому что первое утверждение не возвращает все ряды, которые делает второй. Было бы даже лучше, если первый запрос будет сортировать таблицу по статусу = 1 с подсчетом, а затем общая голоса.
Есть идеи, как присоединиться ко всему этому в запрос SQL? Или я должен использовать PHP между ними?
Решение
Если я не понимаю вашу структуру, простое соединение должно работать нормально:
SELECT stories.vid, body, timestamp, COUNT(votes.id) votecnt FROM stories
INNER JOIN votes ON stories.vid=votes.vid
WHERE stories.lv=1 AND stories.status=1
GROUP BY votes.vid
ORDER BY votecnt DESC
Я не уверен, что вы имеете в виду под
Было бы даже лучше, если первый запрос будет сортировать таблицу по статусу = 1 с подсчетом, а затем общая голоса.
Поскольку ваш оператор, который использует только голоса/истории, которые имеют статус = 1.