CI 묻고 답하기

제목 쿼리결과가 DB와 달라요
카테고리 CI 2, 3
글쓴이 니로 작성시각 2017/02/06 10:32:46
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 19994   RSS

SELECT t1.cate_id lev1, t1.cate_name name, t1.cate_order corder,         

          t2.cate_id lev2, t2.cate_name name, t2.cate_order corder,         

          t3.cate_id lev3, t3.cate_name name, t3.cate_order corder 

FROM category AS t1 

LEFT JOIN category AS t2 ON t2.cate_upid = t1.cate_id 

LEFT JOIN category AS t3 ON t3.cate_upid = t2.cate_id 

WHERE t1.cate_upid = '' 

order by 3,6,9

 

계층쿼리를 대충 짰는데요

 

db에서 검색하면 t2,t3의 cate_id,name,corder모두 잘나옵니다  빈건 null로 표시되구요

근데 ci에서 

 

$q = "SELECT t1.cate_id lev1, t1.cate_name name, t1.cate_order corder, "            

."t2.cate_id lev2, t2.cate_name name, t2.cate_order corder, "            

."t3.cate_id lev3, t3.cate_name name, t3.cate_order corder "            

."FROM category AS t1 "            

."LEFT JOIN category AS t2 ON t2.cate_upid = t1.cate_id "            

."LEFT JOIN category AS t3 ON t3.cate_upid = t2.cate_id "            

."WHERE t1.cate_upid = '' "            

."order by 3,6,9 ";        

$query = $this->db->query($q);

echo $this->db->last_query();

 

이렇게해서 쿼리찍어서 db에도 돌려보고 했는데

result_array로 만들어서 출력하면 t2,t3의 lev2,3 값만 나오고 나머진 타이틀 조차 만들어지지 않아요

[0] => Array
        (
            [lev1] => 2
            [name] => 
            [corder] => 
            [lev2] => 7
            [lev3] => 
        )

 

이런식으로 나오는데.. 왜그런걸가요

 

 다음글 로그인 세션시간제한 (1)
 이전글 codelgniter + mssql 목록 처리 어떤 방... (2)

댓글

kaido / 2017/02/06 10:44:30 / 추천 0
어렵게 테스트 하지 마시고...

$q = "
SELECT t1.cate_id lev1, t1.cate_name name, t1.cate_order corder,         

          t2.cate_id lev2, t2.cate_name name, t2.cate_order corder,         

          t3.cate_id lev3, t3.cate_name name, t3.cate_order corder 

FROM category AS t1 

LEFT JOIN category AS t2 ON t2.cate_upid = t1.cate_id 

LEFT JOIN category AS t3 ON t3.cate_upid = t2.cate_id 

WHERE t1.cate_upid = '' 

order by 3,6,9
";

한번에 넣으셔도 됩니다.
이렇게 해서 쿼리 편집기랑 다르다면 DB를 다른걸 보고 있는게 아닌지 확인해 보세요.

 

니로 / 2017/02/06 10:48:35 / 추천 0

db는 다를수가없어요 방금 db에서 제가 insert로 값을넣은거라.. 없으면 아무것도 안나와야하는데..

편집기랑 프로젝트 디비 확인해보아도 똑같습니다

한대승(불의회상) / 2017/02/06 10:59:52 / 추천 0
@니로 last_query()의 쿼리랑 쿼리 편집기 쿼리랑 동일한데 결과 값이 다르다면 할 수 있는게 아무것도 없습니다.
알브레드 / 2017/02/06 11:00:55 / 추천 0

음... 혹시 DB 캐시 사용을 하시는지 궁금하네요.

니로 / 2017/02/06 11:09:03 / 추천 0
알브레드 //db캐시는 어떻게 확인해보죠?
알브레드 / 2017/02/06 11:12:36 / 추천 0

니로 // 모르시는거 보면 적용을 안하신거 같은데.. 이상하네요;;;

http://www.ciboard.co.kr/user_guide/kr/database/caching.html

니로 / 2017/02/06 11:12:41 / 추천 0

허.. 해결했습니다... 약명으로 준 이름이 t1,t2 cate_name  이라면 모두 동일하게 name으로 적어줘서 쿼리가 이상해졌네요 ;

 

name약명을 name1, name2, name3 으로 구분해주니 되네요 ㅠ_ㅠ 이런..

order도 마찬가지구요,..ㅎ;

미나리 / 2017/02/06 11:12:55 / 추천 0

@니로 t2, t3의 name, corder 명칭을 바꿔서 해보세요. name2, corder3 이런식으로

지금은 리턴받은 name, order 값은 마지막에 작성된 t3.name, t3.corder 값으로 리턴받았을꺼에요... 

니로 / 2017/02/06 11:14:13 / 추천 0
미나리//맞습니다 그문제였습니다! ㅋㅋㅋ 이걸 놓치다니 ;ㅠㅠ
알브레드 / 2017/02/06 11:32:04 / 추천 0
니로 // 해결되셨다니 다행이네요. 별칭이 같은게 있어도 이상없이 뽑아주는군요...;;; 저도 쿼리짤때 조심해야겠습니다 ㅎㅎ