제목 | SQL 관련 질문입니다. | ||
---|---|---|---|
글쓴이 | 쿨가이8 | 작성시각 | 2013/01/11 00:47:23 |
|
|||
안녕하세요. 현재 sns를 개발해보며 CI 학습중인데요. 두 Table간 Join을 통해 Data를 가져오는데 애를 먹고 있어서 이렇게 질문 드립니다. table A (no, user_id, thread_id, subject, contents) table B(no, board_id, user_id, name) 이렇게 field가 있습니다. 두 테이블은 thread_id와 board_id로 연결되어 있구요. table A는 게시판의 글을 저장하는 table이구요, B는 사진을 저장하고 있는 table입니다. table A의 경우 사진이 없는 row는 thread_id가 0으로 저장되고 사진이 있는 경우는 thread_id가 특정 값으로 채워지구요. 이 경우, 해당 thread_id와 동일한 board_id를 가진 row(사진 정보)가 table B에 n개 있을 수 있습니다. (즉, 글 하나당 사진은 0~n개가 있을 수 있습니다.) 이 경우, 사진을 포함하던 포함하지 않던 내림차순으로 10개를 보여주고 사진이 포함된 경우는 당연히 사진을 보여주려 합니다. thread_id가 0이 아닌 경우에만 table B에서 이애 매칭되는 사진 정보를 가져오고 싶은데, (물론 thread_id가 0이어도 10개에는 포함되어야 합니다. 사진이 있는 글 있는글/없는글 포함 10개라서요.) SQL을 어떻게 작성해야 할까요? 이것 때문에 계속 골머리를 썩고 있습니다. 고수님들 확인 부탁 드리겠습니다. |
|||
다음글 | 서버에서 이미지 캐싱 관련 질문 (1) | ||
이전글 | 타서버에서 타서버 DB연결 (2) | ||
우왕아항
/
2013/01/11 09:57:04 /
추천
0
|
쿨가이8
/
2013/01/11 21:26:31 /
추천
0
답변 감사드립니다.
제가 처음 작성했던 Query가 위와 같은데요. (thread_id만 board_id로 수정하였습니다^^;) $this->db->select('A.subject, A.contents, B.name');
$this->db->from(A);
$this->db->join('B', 'A.board_id = B.board_id', 'left outer');
$this->db->order_by('A.no', 'desc')->limit(10);
$query = $this->db->get();
$result = $query->result_array();
이 경우, A와 B의 관계가 1:n이다보니 동일한 A.board_id에 다른 B.name을 가진 A.board_id | B.name row가 n개가 나오게 됩니다. (즉, 같은 글이 사진 하나당 묶이는거죠.) 저는 글 하나에 사진 여러개를 포함시키도록 view를 구성하고 싶거든요. 마치 A.board_id는 group_by를 한 것처럼 말이죠. 흠 이건 어떻게 해야 할 수 있을까요?^^;; |
돌려보진 않았지만 이 비슷한 느낌으로 작성하면 되지 싶습니다.
그리고 thread_id와 board_id는 외래키 연결인데
왠만하면 명칭은 통일하는 것이 모호함을 덜어줄 것 같네요