CI 묻고 답하기

제목 $this->db->select() 사용 시
글쓴이 템포 작성시각 2013/08/05 16:45:02
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 12488   RSS
$this->db->select(A.* B.ID, B.NAME, B.TEL);
$this->db->from('TEST A');
$this->db->join('TOAST B', 'A.ID = B.ID', 'left');

이런 형식으로 데이터를 가져올 경우에

A의 테이블의 데이터를 전부 가져올려고 하는데
몇개는 가공(?)해서 가져와야 할 경우에는 ..
(가공 -> A.NAME AS A_NAME , 이런 형식 ..)

어떻게 처리하는게 가장 효율적인가요 ?

A컬럼 양이 많으면

A.컬럼 , A.컬럼 .... A.NAME AS A_NAME 이렇게 뽑아올수밖에없나요 ?
혹은, A.* ,  A.NAME AS A_NAME 이 방법도 괜찮을거같긴한데 이 컬럼으로 뽑으면 HTML을 다시 손봐야 하는 부분이 생겨버려서

혹시 query해서 가져올 때, 다른 방법이 있지 않을까 싶어서 질문드립니다.
 다음글 from 절에 alias (1)
 이전글 "쌍따옴표"처리는 어떻게 하나요? (1)

댓글

들국화 / 2013/08/05 17:36:24 / 추천 0
질문이 잘 이해가 안되지만 원하는데로 하셔도 될것 같네요.
템포 / 2013/08/05 18:00:05 / 추천 0
답변 감사합니다
질문이 좀 이상했네요 ㅠㅠ;;

제가 A테이블의 모든 정보를 가져오기 위해서는 select 절에 A.* 이렇게 하면 되잖아요 ?

그런데 이 A컬럼에 있는 한 컬럼의 이름을 바꾸면

A.컬럼 AS 뉴컬럼 <-- 이렇게 가져오면 뉴컬럼이란 이름으로 가져올 수 있잖아요 ?
제가 오라클을 사용하다보니 .. DISTINCT를 처리하는 부분을 가져오고 싶은데.. DISTINCT(A.컬럼a) ..

그럼 나머지 A 테이블의 데이터를 가져올 때는 A.컬럼1, A.컬럼2, A.컬럼3... 이렇게 가져오는 방법밖에 없나 싶어서요... A.*도 가져오면서 DISTINCT(A.컬럼a)도 같이 가져왔을 떄 열이 중복처리 안되게 하는 방법도 있나요 ??
들국화 / 2013/08/05 18:39:46 / 추천 0
DISTINCT 도 컬럼제한이 가능 하군요. 찾아보니 11g부터 인듯 한데. 8i이 후에는 거의 안써봐서.... ㅡㅡ;
기본적으로 DISTINCT는 레코드 단위 중복 제거 입니다. 정확한건 아니지만 조금 찾아보니.
DP는 하나의 테이블 일때는 안된다는 말이 있네요.
DISTINCT(A.xxx)하면 A테이블에 대한 중복제거가 되는거 같네요. 즉 A.*에있는 컬럼이 아니라 레코드가 중복제거 되겠죠.
B테이블에 대한 레코드는 중복 제거가 안되겠죠.

오라클이라면 특히나 *을 쓰지말고 이름을 지정하는걸 권장 합니다.