저는 현재 뉴스 데이터베이스 웹 사이트에서 일하고 있으며 가장 인기있는 5 가지 뉴스 기사를 선택하는 쿼리를 만들 수없는 것 같습니다. 이 쿼리에 대한 영향을받는 데이터베이스의 두 테이블은 다음과 같습니다다소 복잡한 mysql 쿼리
- 뉴스 - 모든 뉴스 항목을 포함하는 (등 아이디, 저자, 메시지)
- 요금 - 모든 뉴스 항목에 대한 등급 (ID 포함
지금 내 쿼리가 5 가장 높은 평균 평가와 테이블 요금에서 news_ids하고 가장 많은 표를 선택해야 news_id, 평가 등) 및 COUNT (*) 나는 가정) (그래서 AVG (평가에 의해 주문). 나는 처음에 내 쿼리를 만들려고했는데, 뉴스 테이블에서이 news_ids의 모든 정보를 즉시 (WHERE id IN (- 가장 인기있는 5 개의 news_ids를 선택하는 쿼리)를 사용하여) 가져 왔지만 MySql 버전의 오류를 반환했습니다. WHERE IN 절 하위 쿼리 내부에서 LIMIT를 사용할 수 없습니다.
음, 5 가지 news_ids를 선택해야하는 첫 번째 쿼리에서 나를 도울 수 있기를 바랍니다. 내가 지금 같이있어 쿼리는 (그러나 완전하게 작동하지 않는)입니다 :
SELECT news_id FROM
(SELECT news_id, AVG(rating) AS average_r, COUNT(*) AS amt_r
FROM rates
GROUP BY news_id
ORDER BY average_r,amt_r
DESC LIMIT 5
) AS news_rates
또는 내 스크립트의 나머지 부분과 내용의
:SELECT TOP 5 N.id, N.author, N.message, AVG(R.rating) AS rate, COUNT(R.news_id) AS votes
FROM news N
INNER JOIN rates R ON N.id = R.news_id
GROUP BY N.id, N.author, N.message
ORDER BY rate, votes
방금 해결했습니다! 그런 어리석은 실수, 고마워, 지금 일하고있어 :). – Skyfe