2013-09-16 4 views
1

현재 3 개의 쿼리가 있습니다. PHP에서, 우리는 첫 돌이, 다음 2를 여러 번 실행하고있는 나는 하나 개의 쿼리에서 가지고 싶습니다여러 테이블에서 계산되는 MySQL 쿼리

첫 번째 쿼리는 다음과 같습니다 그 동안 루프 내부에 그런

SELECT id FROM users 

결과는 두 번째가

SELECT id AS rid, count(recommendedById) FROM users WHERE id=$id 

입니다. 여기서 $ id는 첫 번째 쿼리의 users.id입니다. 제 3 질의 2 루프 내에서 실행된다

이다 :

SELECT count(likes) AS likeCounter FROM posts WHERE author_id=$rid 

및 likeCounter 처음 쿼리 표현된다.

누구든지 이것을 하나의 쿼리로 가져올 수 있습니까?

원하는 결과 이 결과는 그가 추천 사용자의 수와 그의 추천 사용자가 자신의 게시물에있어 좋아의 합으로 사용자 당 행 수 있어야합니다.

SELECT u.id AS rid, count(recs.id), count(p.likes) AS likeCounter 
FROM users u 
LEFT JOIN posts p ON p.author_id=u.id 
LEFT JOIN users recs ON recs.recommendedById=u.id 
GROUP BY u.id 

을하지만 사용자가 ID를 가지고, 당신은 users 테이블에서 id를 사용

+0

최종 결과는 무엇입니까? 하나의 값이 합계입니까? 또는 각 사용자별로 별도로 계산합니까? –

+0

결과는 권장 사용자 수와 권장 사용자가 게시물에 올린 사용자의 합계가있는 사용자 당 행이어야합니다. 위의 내용을 추가하겠습니다. –

답변

1
SELECT u.id,COUNT(DISTINCT ruid),sum(p.likes) 
FROM users as u 
LEFT JOIN (SELECT recommendedById as rid,id as ruid from users) as r ON r.rid = u.id 
LEFT JOIN posts p ON p.author_id = ruid 
GROUP BY u.id 
+0

그 것으로 보이는 ... –

+0

당신은 질문에 사용자 테이블 구조를 포함 시키겠다. 나는 그것을 짐작할 것을 강요 당했다. – cske

+0

당신은 컸다;) 당신이 맞다. –

1

당신은이 작업을 수행 할 수 있습니다. 항상 1이 아닌가요?

+0

+1 너는 빠르다 :) – alfasin

+0

$ id 란 무엇입니까? 순수한 SQL 쿼리로 사용하고 싶습니다. 지금까지 감사드립니다! –

+0

이제는 모든 사용자가 WHERE 구문을 제거했습니다. – Niels

관련 문제