제목 | [초보]간단한 DB쿼리 어케 해요? | ||
---|---|---|---|
글쓴이 | 헛발이 | 작성시각 | 2012/05/15 16:02:58 |
|
|||
이건 어떻게 하나요? select a.name, b.name from test1.a, test2.b where a.id = b.test1_id and a.active = 1 and b.active = 1 엑티브레코드를 사용하고 싶은데... |
|||
다음글 | Language Class 사용 시 한글 깨짐 현상 (2) | ||
이전글 | 자체로 만든 helper가 load되지 않아요 ;ㅂ; (2) | ||
양승현
/
2012/05/15 16:12:17 /
추천
0
|
헛발이
/
2012/05/15 16:44:44 /
추천
0
우하하하~ 낚시글은 아니고요
$this->db->join($this->test1.' as B', 'A.id = B.id and A.key = B.key and B.activated=1 and B.date=\'2012-05-01\'', 'left'); 이런식으로 조인부분에 마구 걸어 놨더니.. 데이터가 2000건이 넘어가니 마구 버벅되서 join형식이 잘못되었나 해서요... |
양승현
/
2012/05/15 17:13:52 /
추천
0
음.. 낚시글 아니군요 ㅎㅎ
엑티브레코드보다는 쿼리상에서 미리확인하시는게 나을듯.. 다량의 데이터라면 조건절을 만족한 a,b를 구하시고 조인을 하시는게 맞을듯해요. $this->db->from('(select * from test where a.active='1') a"); 또 LEFT가 아닌 기본으로 .. where와 join의 시점을 생각해보셔야 할듯.. 엄청난 데이터량이라면 디비딴에서 뷰를 만들어 쓰셔도..ㅎㅎ |
헛발이
/
2012/05/15 17:33:52 /
추천
0
그러면 Left조인시에 조건절을 두세개로 하면 따따따불로 검색을 하게 되는건가요?
음... |
변종원(웅파)
/
2012/05/15 18:58:07 /
추천
0
join 구문에서 하나씩 빼보면 어디서 부하가 걸리는지 나옵니다.
그 부분을 마이그레이션 하면 됩니다. |
헛발이
/
2012/05/16 08:26:42 /
추천
0
ㅋㅋ join문을 하나씩 빼보면 결과가 안나오는데요 ㅋㅋ
휴~ 다시 한번 찾아 보겠습니다.. |
한대승(불의회상)
/
2012/05/16 13:24:31 /
추천
0
mysql 을 사용 하신다면
explain 문을 사용하여 어느부분에서 부하가 걸리는지 얼추 확인 가능 합니다. explain select * from member |
헛발이
/
2012/05/16 15:29:14 /
추천
0
앗 초보한데 필요한 좋은 정보감사합니다..
|
무가당
/
2012/05/17 12:46:39 /
추천
0
select
a.name, b.name from test1.a, test2.b where a.id = b.test1_id and a.active = 1 and b.active = 1 이것을 ANSI SQL 구문으로 바꿔보면 select a.name, b.name from test1.a inner join test2.b on a.id = b.test1_id where a.active = 1 and b.active = 1 이렇게 됩니다. 덧글을 보니 left join을 사용하셨는데 본문 Query 기준으로 inner join을 사용하였습니다. ANSI SQL구문에서 처럼 Join에서는 Table간에 Join 되어야 할 Column만 on절에 두고 Where절에서는 Join된 결과에서 검색해야할 조건만 두는 것이 좋습니다. 그리고 ANSI SQL구문을 추천드리는 이유는 일단 대부분의 DBMS가 지원하는 표준이고 Join절의 조건과 Where절의 조건을 구분하여서 가독성을 높일 수 있습니다. |
$this->db->from('test1 a");
$this->db->join("test2 b", "b.test1_id = a.id and b.active = '1'");
$this->db->where("a.active" , "1");
$query = $this->db->get();
$result = $query->result_array();
이런식? 엥~ 답글달고보니 헛발이님이시네.. 낚시글 이신가요? 호곡~