CI 묻고 답하기

제목 join에서 테이블 alias를 사용중인데, 동일한 필드명을 쉽게 가져오는 방법이 없을까요?
카테고리 CI 2, 3
글쓴이 칸이 작성시각 2019/08/14 13:52:11
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11962   RSS

select * from aaaa as a 

left join bbbb as b on a.id=b.id

left join cccc as c on a.id=c.id

 

이처럼 세개의 테이블을 조인해서 액티브쿼리 형태로 사용중입니다.

위 쿼리는 보기 편하게 그냥 기술한겁니다.

 

문제는 a.name이라는 것이 있는데.. c 테이블에도 name이 있습니다.

c 테이블에 데이타가 들어갈수도 있고 없는 경우가 있는데..

name을 찍으면 이 c.name의 데이타를 가져와 빈 공백이 되게 됩니다.

 

a.id, a.name.... 이처럼 출력할 컬럼명을 지정해서 출력하면 되는 것은 알고 있는데..

컬럼이 많아서 이 또한 곤욕이네요.. ㅡ.ㅜ;

혹 편법이나 다른 방법으로 a.name의 데이타를 출력하는 방법이 없을까요?

join은 필히 사용해야 합니다..

 다음글 세션 라이브러리 로드시 403, 500에러가 납니다. (3)
 이전글 CI table insert. update 성공 후 데... (7)

댓글

칸이 / 2019/08/14 14:00:42 / 추천 0

select *, a.name from aaaa as a left join bbbb as b on a.id=b.id left join cccc as c on a.id=c.id

으로 해서 뷰단에서 $list['a.name'] 으로 찍으니 오류를 발생시킵니다.

이처럼 사용하면 안되나요??

 

select *, a.name as a_name from aaaa as a left join bbbb as b on a.id=b.id left join cccc as c on a.id=c.id

으로 다시 alias 줘서 $list['a_name']으로 해결은 했는데..

위처럼 사용을 못하는건가요??

막 코딩에서는 문제없이 사용이 가능했는데... ㅡ.ㅜ;

칸이 / 2019/08/14 14:16:26 / 추천 0

select *, a.name from aaaa as a left join bbbb as b on a.id=b.id left join cccc as c on a.id=c.id

로 사용하고 result_array로 찍어보니..

a.name의 값이 그냥 name으로 값으로 출력이 되네요..

즉..

a.name 은 test 이고.. c.name은 값이 없다고 해서..

view 단에서는 그냥 name으로 값을 찍으면.. a.name의 값이 들어오네요..

이게 정상적으로 작동을 하는것이죠??

 

원하는 결과이기는 한데.. 동일한 필드를 사용하다보니, 혹 다른 문제가 있ㄴ느것은 아닌지 궁금해서요..

 

kaido / 2019/08/14 15:07:56 / 추천 0

우선 개념적으로...

A 테이블에 a.name 하고 C 테이블의 c.name 은 전혀 다른 것으로 보여집니다.

c에서는 있는경우도 있고, 없는 경우도 있는데 a 에는 있다는 것은 사실상 둘은 전혀 다른 필드라고 추측되어집니다.

 

즉 이 문제는 필드명은 같은데 전혀 다른 필드를  어떻게 분리합니까? 라고 질문 하시는것과 같습니다.

 

2번째로 테이블 조인이 3개나 되고 동일하게 겹치는 필드명도 있는데 * 아스트리거로 전체 필드 조회해 오는 것은 좋지 않습니다.

귀찮아도 최소 사용 할 필드를 나열해 주시는 것이 좋습니다.

전체 필드 조회는 필드 갯수가 적으며, inodb 가 아닌 myisam 테이블에서 유용합니다.