2013-10-26 5 views
0

사용자가 게시 한 게시물 수를 표시하고 싶지만 몇 가지 테이블이 있으며 ID를 일치시키고 계산해야합니다. 이 같은열이 다른 테이블의 열과 일치하는 행 수를 계산하는 방법

뭔가 :

사용자 표

userid  username  email    regdate 

    34   mister  [email protected] 2013-10-26 12:01:07 

게시물 표

이제
postid  creator  post_comment  post_title  status 

    1   34   This is comment Post 1   published 
    2   12   This is comment Post 2   published 
    3   34   This is comment Post 3   pending 
    4   25   This is comment Post 4   published 
    5   34   This is comment Post 5   published 

나는 이미 내가에서 특정 사용자에 대한 모든 데이터를 선택하는 쿼리를 사용자 표 :

mysqli_query($conn, "SELECT * FROM users WHERE userid = $userid"); 

$ userid는 현재 로그인 한 사용자의 ID입니다. 그리고이 방법은 잘 작동합니다. 해당 사용자에 대한 모든 관련 정보가 선택됩니다.

하지만 각 사용자가 만드는 게시물 수를 표시하고 싶습니다. 나는 SQL COUNT 기능이 같은 작동 W3 스쿨에 선가 : 당신이 5 개 게시물에서, 게시 된 테이블의 예에서 볼 수 있듯이, 그러나

mysqli_query($conn, "SELECT COUNT(creator) AS userposts FROM posts WHERE creator=$userid"); 

을, 3은 사용자 (34)로부터 그리고이 3의 1은 게시되지 않습니다 .

userid가 $ userid와 일치하는 모든 사용자를 선택한 다음 작성자와 상태를 게시물에서 선택하고 작성자가 $ userid이고 상태가 게시 된 게시물 수를 계산하는 SQL 쿼리 작성 방법을 모르겠습니다.

사용자 아저씨가 출판이 개 게시물이 :

내가 궁극적으로 목표로하고있어 출력됩니다. 당신이 의견에 질문으로 게시 된 게시물의 수를 얻기 위하여

+0

'SELECT t1.name, t2.salary FROM 직원 t1 INNER JOIN 정보 t2 ON t1.name = t2.name;'같은 내부 조인을 사용하십시오. http://www.w3schools.com/sql/sql_join_inner.asp –

답변

0
SELECT COUNT(creator) AS userposts FROM posts p 
LEFT JOIN users u ON p.creator=u.userid 
WHERE creator=$userid AND status='published' 
1

, 당신은 하나 개의 쿼리에 AND 연산 status = 'published'

mysqli_query($conn, "SELECT COUNT(creator) AS num_posts FROM posts 
WHERE creator=$userid AND status = 'published'"); 
+0

예,이 작품은 이제 분리 된 쿼리입니다. 이미 사용자 데이터를 가져 오기 위해 하나의 쿼리가 있습니다.이 쿼리를 동일한 쿼리에 넣을 수 있습니까? 아니면 그냥 게시물 수를 계산할 두 번째 쿼리가 필요합니까? –

0

모든 당신의 조건 문을 리팩토링해야

SELECT users.*, COUNT(creator) AS userposts FROM users u 
LEFT JOIN posts p ON p.creator = u.userid 
WHERE p.creator = $userid AND p.status = 'published' 
관련 문제