제목 | join에서 테이블 alias를 사용중인데, 동일한 필드명을 쉽게 가져오는 방법이 없을까요? | ||
---|---|---|---|
카테고리 | CI 2, 3 | ||
글쓴이 | 칸이 | 작성시각 | 2019/08/14 13:52:11 |
|
|||
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
|
칸이
/
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 테이블에서 유용합니다. |
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']으로 해결은 했는데..
위처럼 사용을 못하는건가요??
막 코딩에서는 문제없이 사용이 가능했는데... ㅡ.ㅜ;