테스트 사이트 - 개발 중인 베타 버전입니다

SQL고수님께.. 게시판을 한번에 읽어 올때.. 채택완료

엘에이맨 10년 전 조회 4,082

사진과 같이 읽어 왔으면 합니다.

 

</p><p>select * from gr_write_테이블 where wr_is_comment = 0 order by wr_num</p><p>select * from g5_board_file where bo_table = 테이블 and where wr_id = 해당 게시글 order by bf_no</p><p>

 

으로 게시판 다 읽어 오는데..

 

사진이 있다고 하면 어떻게 읽어와야 하나요?  하나의 SQL문장으로 했으면 합니다.

 

{ wr_id : 1

files: [

{

bf_file:

},

{

bf_file:

}

]

},

{wr_id: 2

}

JSON으로 했을 때  위와 같이 나와야 되는데. SQL 한문장으로 가능할까요? 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
10년 전

​query 하나로 한 게시판의 게시물들을 파일 정보와 함께 읽어오고 싶으신 건가요?

 

 </p><p>SELECT bt.wr_id, bt.wr_subject, ft.bf_no, ft.bf_file FROM g5_write_게시판아이디 AS bt 
LEFT JOIN g5_board_file AS ft ON bt.wr_id = ft.wr_id 
WHERE ft.bo_table = '게시판아이디'
ORDER BY bt.wr_num, ft.bf_no</p><p> 

 

이런식으로 하시면 될텐데.. 문제는 파일이 여러개면 같은 wr_id 인 row 가 여러개 fetch 됩니다.

PHP 코드로 살짝 손보셔야 할겁니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

엘에이맨
10년 전
첨부 파일이 여러개일때는 첨부파일에 따른 메인이 같이 붙어 오는 것 같네요..
즉 하나의 메인에 첨부가 여러개 오는 것은 한의 SQL로 안된다는 것이죠..

LEFT JOIN을 더 공부해봐야 될것 같습니다. 감사합니다.
[code]
SELECT bt.*, ft.bf_no, ft.bf_file FROM g5_write_notice AS bt LEFT OUTER JOIN g5_board_file AS ft ON (bt.wr_id = ft.wr_id and ft.bo_table = 'notice') where wr_is_comment=0 ORDER BY bt.wr_num
[/code]
위와 같이 읽어와서 사진이 1개 이상인 곳의 wr_id로 제거해서 주면 될것 같네요..
[code]
foreach($arr as $k => $v)
{
foreach($arr as $key => $value)
{
if($k != $key && $v['wr_id'] == $value['wr_id'])
{
unset($arr[$k]);
}
}
}
//print_r($arr);
[/code]

댓글을 작성하려면 로그인이 필요합니다.

10년 전

sql 한문장이 아니더라도 하나의 array 에 결과값을 짜집기해서 넣고 json 으로 변환하면 위와 같이 뽑을수 있습니다.

파일이 몇개인지 모르는 상황에서 한문장으로 하려면 서브쿼리나 left join 으로 뽑아서 php 에서 루프돌리면서 필터링해야 하는데 DB부담도 부담이고, 오히려 효율적이지 않습니다. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전

한문장으로 불가능합니다.

get_file($bo_table, $wr_id) 을 이용하세요. ^^

해당함수는 /lib/common.lib.php 에 있습니다. 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

10년 전
sean_simples@nate.com 친추주세요
로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인