2013-12-19 3 views
0

여기에 테이블 의 구조가 좋아입니다 : 여기 SQL 쿼리를 만드는 방법은 무엇입니까?

id(int 11) 
idn(varchar 10) 
type (enum ('up','down')) 

뉴스 테이블 의 구조 :

SELECT header FROM News n left join Likes l on l.idn=n.idn ORDER by n.date 
:

id(int 11) 
idn(varchar 10) 
header (varchar 100) 
date(datetime) 

뉴스를 표시하려면, 나는 SQL 쿼리를 사용하여

하지만 지금은 헤더 뉴스를 선택하고 싶습니다. 테이블의 sc 카운트 행은 type = up 인 것을 좋아합니다.

어떻게하면됩니까?

+0

당신은 당신의 전체 게시물을 재구성시겠습니까? – Thibault

+0

'왼쪽 결합은 좋아요'대신 '켜기'가 켜집니다. –

+4

@Thibault 때로는 사용자가 올바른 질문으로 질문을 표현하는 데 도움이 필요합니다. OP는 약간의 질문을 던지려고 노력했지만이 언어에서는 다른 사람들보다 유창하지 않을 수 있습니다. 가능한 경우 질문을 수정하십시오. –

답변

1

다음은 매일 가장 많이 쓰이는 헤더를 가져 오는 쿼리입니다.

SELECT header FROM News as n 
LEFT JOIN 
(
    Select idn,Count(*) as UpLikes FROM Likes WHERE type='up' GROUP BY idn 
) as l 
    ON l.idn=n.idn 
ORDER BY n.date,l.UpLikes DESC 
0
SELECT n.header, COUNT(i.`id`) as like_count 
FROM Likes l LEFT JOIN News n ON n.idn = l.idn 
WHERE l.`type` = 'up' 
ORDER BY like_count DESC 
0

왜 당신이 사용하지 않는 : 당신이 ORDER BY에서 n.date을 제거 모든 날짜 TOP 필요한 경우

SELECT id, idn, header, LikeCount 
    FROM 
    (
     SELECT id, idn, header, (SELECT COUNT(1) FROM [Likes]) AS [LikeCount] 
     FROM [News]  
    ) 
    ORDER By [LikeCount] 
+2

MySQL과 달리 Access와 비슷합니다. – virmaior

관련 문제