2011-11-15 1 views
1

가입하세요 사용하여 내 테이블MySQL의 쿼리 (LINK 티켓, 직원, 고양이, 댓글) 여기

티켓

tic_id,  
tic_cat  
tic_priority 
tic_cus  
tic_date  
tic_title  
tic_msg  
tic_files  
tic_emp  
tic_moved  
tic_statue 
tic_rate  

직원

emp_id  
emp_name  
emp_username 
emp_password 
emp_cat  
emp_special 
emp_lastlogin 
emp_session 
emp_code  
emp_statue 
emp_master 
emp_ip  

고양이

입니다
cat_id  
cat_type  
cat_name  
cat_statue 
cat_delete 
cat_date  
cat_ip  
cat_options 

댓글

com_id  
    tic_id  
    cus_id  
    emp_id  
    com_msg  
    com_time 
    com_ip  
    com_statue 

그리고 내가이 쿼리를 확인하지만 난이 문제

tic_id | tic_cat | cat_name | tic_title | tic_statue | tic_priority | tic_msg | emp_name | comments_row | last_comment | 

같은 결과를 필요

쿼리

SELECT 
     tickets.tic_id 
     ,tickets.tic_cat 
     ,cats.cat_name 
     ,tickets.tic_title 
     ,tic_statue 
     ,tic_priority 
     ,tickets.tic_msg 
     ,employee.emp_name 
     ,count(comments.com_id) 
     ,(SELECT comments.com_msg 
      from comments 
       order by com_id DESC limit 1) 
      AS last_comment 
     FROM tickets 
     LEFT JOIN employee 
        on (tickets.tic_emp = employee.emp_id) 
     LEFT join cats 
        on (tickets.tic_cat = cats.cat_id) 
     LEFT JOIN comments 
        on(tickets.tic_id = comments.tic_id) 

    WHERE tic_cus=2 /* 2 -> This Is Customer Id */ 
    GROUP BY comments.tic_id 
인가 > 단지 2 개 결과 내가 최근 코멘트 싶어

을 보여 - -

내 문제는 내가 2 고객 번호 데이터베이스 3 결과가

인가> 2 결과이 같은 최근 코멘트에게 있습니다

방법 나는이 두 오류 아웃이 쿼리를 할 수

편집 포스트 새 쿼리

문제 2 번이 네가 윌리엄 이니를 사용하여 해결 한 후 Y

SELECT 
     tickets.tic_id 
     ,tickets.tic_cat 
     ,cats.cat_name 
     ,tickets.tic_title 
     ,tic_statue 
     ,tic_priority 
     ,tickets.tic_msg 
     ,employee.emp_name 
     ,count(comments.com_id) 
     ,(SELECT comments.com_msg 
      from comments 
       WHERE tickets.tic_id = comments.tic_id 
       order by com_id DESC limit 1) 
      AS last_comment 
     FROM tickets 
     LEFT JOIN employee 
        on (tickets.tic_emp = employee.emp_id) 
     LEFT join cats 
        on (tickets.tic_cat = cats.cat_id) 
     LEFT JOIN comments 
        on(tickets.tic_id = comments.tic_id) 

    WHERE tic_cus=2 
    GROUP BY comments.tic_id 

는 입증하기 위해이 테이블에서 일부 데이터를 표시 할 수

SELECT 
     tickets.tic_id 
     ,tickets.tic_cat 
     ,cats.cat_name 
     ,tickets.tic_title 
     ,tic_statue 
     ,tic_priority 
     ,tickets.tic_msg 
     ,employee.emp_name 
     ,count(comments.com_id) 
     ,(SELECT comments.com_msg 
      from comments 
       WHERE tickets.tic_id = comments.tic_id 
       order by com_id DESC limit 1) 
      AS last_comment 
     FROM tickets 
     LEFT JOIN employee 
        on (tickets.tic_emp = employee.emp_id) 
     LEFT join cats 
        on (tickets.tic_cat = cats.cat_id) 
     LEFT JOIN comments 
        on(tickets.tic_id = comments.tic_id) 

    WHERE tic_cus=2 
    GROUP BY tickets.tic_id 
+1

@Gordon을 : 당신이 당신의 마지막 편집과 영업 이익에서 콘텐츠를 삭제합니다. – mellamokb

+0

@mellamokb 그래, 나는 OP를 편집하기 전에 아마도 첫 번째 버전을보고 있었을 것이다. – Gordon

답변

2

1) 해결? 즉, 세 가지 기록이 있어야한다는 것을 어떻게 알 수 있습니까? select * from tickets where tic_cus = 2 자체가 3 개의 레코드를 반환합니까?

2) 댓글 하위 쿼리를 티켓별로 필터링해야합니다. 나는 또한뿐만 아니라 하위 쿼리에 주석 수를 가지고 추천 전부 GROUP BY을 떠날 것이다 :

,(select count(comments.com_id) 
    from comments 
    where comments.tic_id = tickets.tic_id) as comment_count 

,(select comments.com_msg 
    from comments 
    where comments.tic_id = tickets.tic_id 
      ^^^^^^^ filter by ticket so not last of ALL comments 
order by com_id DESC limit 1) as last_comment 
+0

@mellamokb 고맙습니다, 문제가 해결 된 후 편집 후 내 게시물을 참조하십시오 :) –

+0

귀하의 질문은 내가 group_cookie하지만 내가 group_ ticket_tic_id를 그룹화해야 문제를 찾기 위해 도와주세요 :) –