2013-02-07 5 views
0

두 개의 다른 테이블에서 메시지와 이미지를 가져 오기 위해 다음 쿼리를 수행하고 있습니다. 여기에 하나의 메시지가 여러 개의 이미지 나는 결과 다음 제대로 작동 쿼리 보여주는 다음과 같은 기록이 있는지에 대한왼쪽에서 여분의 필드를 제거하는 방법

을 가질 수

select msg.messageid, msg.message, msg.sentby, msg.adddate, 
p_i.image_id ,p_i.small_pic_path 
from user_messages as msg 
LEFT JOIN post_images as p_i 
on msg.messageid=p_i.messageid 
where msg.messageid='zpx1btrpvpa1360154523078' 
order by msg.adddate desc 

출력 ADDDATE sentby

messageid message sentby adddate image_id small_pic_path 
    1   abc  aa  12/2/12 6   /sdf/sdf 
    1   abc  aa  12/2/12 7   /asdf/df 
    1   abc  aa  12/2/12 8   /cxd/sxc 
    1   abc  aa  12/2/12 9   /zz/szz 

여기 의 MessageID 메시지입니다 반복되고 JSP 페이지에 표시되는 동안 은 총 4 개의 다른 메시지를 표시합니다.

하지만

내가

1로 표시하려는와 관계있는 메시지 세부 사항) 메시지 4 imageid 및 small_pic_path (메시지 ID를 기반으로)을 표시하려는 sentBy
의 messag 아이디의 모든 small_pic_path 이 메시지

1) 메시지 sentBy
이 메시지의 messag 아이디의 모든 small_pic_path

2) 메시지 sentBy
메시지

3) 메시지 의 messag 자료 sentBy
메시지

+1

결과를 어떻게 보이시겠습니까? – sgeddes

+0

@sgeddes 질문을 편집했습니다. – xrcwrn

답변

1

정말 귀하의 요구 사항을 이해하지 않으면, 당신은 쓰기 :

하지만 4 imageid을 표시 할 단일 메시지 세부 small_pic_path

어떻게 그 기록들을 보여주고 싶니?

같은 줄에 의미 가정하면, 다음 GROUP_CONCAT를 사용하여 조사 :

SELECT msg.messageid, msg.message, msg.sentby, msg.adddate, 
    group_concat(p_i.image_id separator ';') imageids, 
    group_concat(p_i.small_pic_path separator ';') picpaths 
FROM ... 

다음은 결과를 보여주기 위해 SQL Fiddle을합니다.

결과를 다르게 표시하려는 경우 UI를 통해 결과를 처리해야 할 가능성이 있습니다.

행운을 빈다.

1

JOIN를 사용하는 경우이 예상되는 동작된다 messag 자료의 모든 small_pic_path 모든 small_pic_path, 당신은 교차 제품을 얻습니다.

행을 접으려면 GROUP BY에 해당 열을 사용하십시오. 귀하의 경우가있을 수 있습니다

GROUP BY messageid, message, sentry, adddate 
+0

을 참조하십시오.일반적으로 데이터베이스 쿼리의 출력은 사용자에게 표시되기 전에 형식이 지정되므로 데이터 집합을 반복하여 원하는 형식으로 작성할 수 있습니다. – nextgentech

+0

@tadman 오타가 있는데'날짜 추가 '는'adddate'여야합니다. –

+0

아이러니하게도이 브라우저의 오타 수정 기능 때문입니다. 메모 주셔서 감사. – tadman

관련 문제