2012-06-12 3 views
2

에서 SELECT 쿼리 나는이 두 테이블이 사용자 테이블에서).COUNT와 두 테이블

1 개의 복잡한 쿼리를 만들 수 있습니까? 사용자 정보에 의해

select u.id, u.name, u.email, u.rank, count(p.id) as 'counter' from users u 
inner join pages p on p.user = u.id 
group by u.id, u.name, u.email, u.rank 

당신의 그룹을 각 사용자의 페이지 수를 계산 (계산) :

+4

모든 대답을하지만, 나는'LEFT 제안 JOIN'이므로 레코드가없는 페이지가없는 사용자는 0이됩니다. –

+0

너무 많은 좋은 답변 : D – Aelios

답변

2

내가 할 수있는 ' t는 복잡한 쿼리로를 만들지 만, 여기에 간단한 하나 :

SELECT u.name, u.email, u.rank, u.id, count(p.id) as 'PageCount' 
FROM Users u 
JOIN Pages p ON 
    p.id = u.id 
GROUP BY u.name, u.email, u.rank, u.id 
+0

답장을 보내 주셔서 감사합니다. 다른 표를 추가했습니다. 어떻게 의견을 표시 할 수 있습니까? 사용자? (주석 표는 페이지와 정확히 같습니다). –

+1

동일한 쿼리에서이를 수행하려면 주석 테이블에 다른 JOIN을 추가하기 만하면됩니다. JOIN Comment c ON c.id = u.id' - _but_ @Michael은 질문에 대한 자신의 의견에서 " d는 이제 'LEFT OUTER JOIN'을 사용하여 모든 사용자에 대해 레코드를 다시 가져옵니다. 그렇지 않으면 페이지 * 및 * a 주석을 작성한 사람 만 볼 수 있습니다. – Widor

+0

@Widor, 두 명의 사용자가 동일한 이름을 가진 경우 검색어가 올바른 결과를 (논리적으로) 생성합니까? – manurajhada

0

예, 같은 해.

0

어때?

select u.id, count(p.id) as 'number_of_pages_wrote' 
from  users u inner join pages p 
on  u.id = p.id 
group by u.id; 
-1

이것은 JOIN에 의해 달성 될 수있다. 당신은 이런 식으로 작업을 수행 할 수 있습니다

0
select users.id, users.name,users.email,users.rank, count(pages.id) 
from  users,pages 
where users.id = pages.user 
group by users.id 
0

); 예를 들어

,

SELECT * FROM pages 
INNER JOIN users ON (users.id=pages.user) 
WHERE users.id=5 

난 당신이 집계 함수를 포함하는 나머지를 할 드리겠습니다 아이디 5. 모든 페이지를 선택합니다 -

SELECT u.*, p.count 
FROM users u, 
    (SELECT pa.id, count(1) FROM pages pa WHERE pa.id = u.id) p 
WHERE u.id = p.id 
3
select u.*,count(p.*) from users u left join pages p on u.id=p.user group by u.id; 
+0

u와 p는 무엇입니까? –

+3

@DanBarzilay 'SQL'을 올바르게 재검토하고, u와 p는 테이블의 별칭 이름입니다. –

+0

그래서 왜'users'와'u'가 여기에 있습니다 :'from users u left' –

0

무엇을이 간단한 쿼리에 대해 내부 사용 조인 아래

SELECT user, COUNT(*) AS pages FROM page GROUP BY user