개발 Q&A

제목 CI SQL JOIN 질문입니다!!!(난이도 하) 도와주세요 아침부터 이러고 있습니다ㅜㅠ
글쓴이 루비콘 작성시각 2016/01/20 18:58:24
댓글 : 10 추천 : 0 스크랩 : 0 조회수 : 13208   RSS

오전에 CI JOIN SQL 에 관련하여 질문을 드렸지만 추가적으로 질문드립니다.

 

우선 간단한 설명부터 드리겠습니다.

 

dgc_edu_trade_1_0 테이블 구조 (이하 A 라고 칭하겠습니다.)

 

 

dgc_edu_trade_1_0 테이블 내용

 

 

dgc_edu_trade_product 테이블 구조 (이하 B 라고 칭하겠습니다.)

 

 

dgc_edu_trade_product 테이블 내용

 

 

위에 보시는 바와 같이 2개의 테이블이 있습니다.

 

A 와 B 테이블을 조인시켜서 A 테이블이 가지고있는 모든 값과 B 테이블이 가지고 있는 product_name 이라는 값을 출력하고 싶은데 감을 못잡겠습니다.

 

참고로 A 테이블의 no(pk)B 테이블의 no(pk) 값은 전혀 상관 없는 값입니다.

그냥 다른 처리를 삭제라던가 검색이라던가 다른 처리를 해줄때 편하라고 no 값을 준것 뿐입니다.

 

 

 

어떻게 해야 두 테이블을 조인시켜서 제가 원하는 값을 뽑아낼 수 있을까요

(A 테이블의 모든값B 테이블의 product_name 값)

 

 

*p.s

		$this->db->select("a.*","b.product_name");
		$this->db->from("dgc_edu_trade_1_0 a");
		$this->db->join("dgc_edu_trade_product b","b.no = a.no","left");
		$this->db->where("a.no",$no);
		$result = $this->db->get()->result_array();

아침에 배운대로 코드를 짜봤지만 돌아가진 않습니다.

그냥 참고정도로 하시면 좋을거 같습니다.

 

어떻게 코드를 짜야 정상적으로 작동할지 답변 남겨주셨으면 감사하겠습니다.

그럼 추운날씨 감기 안걸리게 조심하세요 감사합니다.

 다음글 td안에서 if문으로 날짜 비교하기 (3)
 이전글 조언점 부탁드립니다... 초보입니다ㅜㅜ (1)

댓글

변종원(웅파) / 2016/01/20 19:29:14 / 추천 0
스키마문서 또는 erd문서 없으세요? 추측해보면 a의 product_no와 b의 no를 하면 될 것 같네요. 조인은 연관이 있는 필드로 해야합니다.
루비콘 / 2016/01/20 19:51:32 / 추천 0

제가 하고자 하려 했던게 사용자와 관리자 페이지로 나눈후에 

관리자 페이지에서 일정 항목을 등록할 수 있습니다 그게 B 테이블 입니다.

 

그리고 사용자 페이지는 문의 게시판인데 A 테이블을 사용합니다.

 

문의 게시판에서 사용자가 B 테이블에 있는 값들중 하나를 선택해서 입력을 하면 

그게 상세 페이지에서 보이는 형식인데

 

관리자 페이지에서 만약에 기존에 있던 항목을 수정한다면 

그값은 B 테이블에만 적용 되므로

 

사용자가 상세보기를 했을경우 만약 기존에 있던 B 테이브르이 값이 수정이 되었다면 

수정이 된 항목으로 조인을 해서 보여주고 싶은 것인데 

 

웅파님께서 말씀하신데로 했는데도 되질 않네여 ㅠㅠㅠㅠㅠ

변종원(웅파) / 2016/01/20 21:53:11 / 추천 0

그럼 구조를 잘못 만드신거죠.

 

join에 대해 다시 검색해서 보세요. 

 

A 테이블의 특정 번호와 B 테이블의 특정 번호가 연관관계에 있어야 join을 해서 원하는 결과를 가져옵니다.

 

단순하게 A 테이블에 다 놔도 되는 것을 B 테이블로 나눠놨다고 생각하고 A-B를 똑같은 번호로 묶어주는 겁니다.

예를 들자면 A의 no가 기준이라면 B의 no가 아닌 A_no 라는 필드를 만들고 똑같은 번호가 들어가야 하는겁니다.

A.no = 1

B.A_no = 1 이래야 a.no=B.A_no 라는 join 공식이 성립하는 겁니다.

 

구조를 다시 만드세요.

변종원(웅파) / 2016/01/20 21:53:26 / 추천 0

게시판 이동합니다.

/ 2016/01/21 08:38:50 / 추천 0

@루비콘

AS가 빠졌는데요?

/ 2016/01/21 08:40:00 / 추천 0
$this->db->select("a.*,b.product_name");
$this->db->from("dgc_edu_trade_1_0 AS a");
$this->db->join("dgc_edu_trade_product AS b","b.no = a.no","left");
$this->db->where("a.no",$no);
$result = $this->db->get()->result_array();

php만 보자면 요런식으로 되야할 거같은데요...

kaido / 2016/01/21 08:48:37 / 추천 0

@닉

 

AS 는 빼도 동일 작동 합니다.

다만 유지보수 관리의 용이를 위해서 직관적으로 구분이 쉽게  AS를 넣으면 좋습니다.

 

 

 

루비콘 / 2016/01/21 09:02:40 / 추천 0

답변달아주신 분들 모두 감사합니다 

조금더 공부하고 고민해봐야겠네요 ㅎㅎ 

 

/ 2016/01/21 10:11:09 / 추천 0

@kaido

아 그렇군요.. 허접티 냈네요 ㅎㅎ 

루비콘 / 2016/01/21 10:12:22 / 추천 0

@닉

아니에요 답글 달아주신것만으로도 저는 감사하죠 ㅎㅎㅎ