2012-01-29 5 views
0

나는 내 자신의 포럼 시스템에 대한 코드를 시도하고 있으며, 1 점을 제외하고는 모든 것이 잘 진행되고 있습니다.2 개의 별도의 사용자에 대한 2 명의 사용자에 대한 사용자 이름 검색

카테고리를 탐색 할 때 각 스레드의 작성자와 각 스레드의 마지막 게시물을 게시 한 사용자의 사용자 이름을 모두 검색하는 방법은 무엇입니까?

이것은 내가 지금까지 가지고있는 것이지만 여전히 1 사용자 이름 (OP의 사용자 이름) 만 검색합니다.

SELECT 
    c_name, <-- category name 
    t_title, <-- thread title 
    t_by, <-- thread started by user id 
    username, <-- username of the thread starter 
    p_by, <-- post by user id 
    p_date, <-- post posted date 
    COUNT(p_id) as total_posts 
FROM 
    forum_categories 
LEFT JOIN 
    forum_threads 
ON 
    t_cat = c_id 
LEFT JOIN 
    forum_posts 
ON 
    p_thread = t_id 
LEFT JOIN 
    users 
ON 
    t_by = id 
AND 
    p_by = id 
WHERE 
    t_cat = 1 

여기서 알 수 있듯이, 필자는 스레드 스타터의 사용자 이름 만 검색합니다. 단일 쿼리로이 작업을 수행 할 수 있습니까?

감사

답변

1

당신은 당신의 쿼리에 두 사용자를 위해 가입 왼쪽한다 :

SELECT 
    c_name,   <-- category name 
    t_title,   <-- thread title 
    t_by,    <-- thread started by user id 
    ut_by.username, <-- username of the thread starter 
    p_by,    <-- post by user id 
    up_by.username, <-- username of the post 
    p_date,   <-- post posted date 
    COUNT(p_id) as total_posts 
FROM 
    forum_categories 
     LEFT JOIN 
    forum_threads 
     ON t_cat = c_id 
     LEFT JOIN 
    forum_posts 
     ON p_thread = t_id 
     LEFT JOIN 
    users ut_by 
     ON t_by = ut_by.id 
     LEFT JOIN 
    users up_by 
     on p_by = up_by.id 
WHERE 
    t_cat = 1 

이 모두 GET 사용자 세부 사항에 대한 답변입니다. 이 쿼리에 포함될 수있는 다른 오류에 대한 면책.

+0

같은 쿼리에서 동일한 테이블에 대한 조인을 두 번 할 수 있습니까? – MrE

+0

물론 팁적인 경우는 'employees' 오라클 샘플 테이블입니다. 그것은'manager_id'와'employee'가있는'manager_id'에 대한 외래 키를 포함하고 있습니다, 당신은 직원들과 스스로 가입 할 수 있습니다. 이 경우 필요한 것은 테이블에 별명을 지정하는 것입니다. – danihp

+0

남자 나는 전에 이것을 시험해 보지 못한 것에 대해 어리 석다. 완벽하게 작동 :). 고마워요. 가능한 한 대답으로 표시합니다. – MrE

관련 문제