JOIN이 포함 된 쿼리를 작성 중입니다. Active Record로 db 작업을 수행 한 것은 이번이 처음이며, 약간의 걸림돌을 맞았습니다. . 그러나CodeIgniter JOIN 문의 ActiveRecord 필드 이름
function get_profile_by_username($username)
{
$this->db->join('companies', $this->table_name.'.company_id = companies.id');
$this->db->where('LOWER(username)=', strtolower($username));
$query = $this->db->get($this->table_name);
if ($query->num_rows() == 1) return $query->row();
return NULL;
}
: 나는 테이블에 가입 할
내가 성공적으로 그렇게 같은 이런 종류의 일을했습니다 그래서 나는 등 사용자가에있는 회사의 이름을 얻을 수있는 users
테이블에 companies
라고 그 문제는 companies
의 필드가 id
과 name
인 것을 해당 개체에 간단히 name
이라고 반환합니다.
일반적으로 원시 쿼리를 작성할 때 테이블에 별칭을 지정하면 결과는 u.company_id
, c.name
과 비슷합니다. 그래서 name
은 사용자와 아무 관련이 없지만 물론 회사의 이름입니다. 그리고 현재는 아니지만 미래에는 잠재적으로 문제가되지는 않지만 id
열은 분명히 결과 집합에 공존 할 수 없으므로 하나를 덮어 씁니다!
특정 표의 입력란간에 이러한 구분을 어떻게 할 수 있습니까? 또는 테이블 조인 및 조인 된 쿼리 데이터 세트/개체로 작업하는 더 좋은 방법이 있습니까?
편집 : 대단한
SELECT u.id, u.username, c.name
FROM users AS u
JOIN companies AS c
ON c.id = u.company_id
WHERE u.username = 'foobar';
을하지만 활성 레코드에 내가 이해 할수 그렇게하려고한다면 그것은 매우 가난한 연습입니다 :
나는 원시 쿼리로 그 일을 한 경우 내가 할 거라고 , 그것이 전혀 작동하면.
나는 이것에 의지해야한다고 생각했지만, 나는 그런 것을 선택할 수있을 것이라고 확신하지 못했습니다. 예를 들어,'-> get ('user AS u')'와 같은 테이블에 별명을 어떻게 부여 할 수 있습니까? 이것이 모든 activerecord 데이터베이스 타겟과 호환 될 수 있습니까? – deed02392
@ deed02392 확인, 업데이트 코드 – safarov
알았어. 'AS'연산자는 표준 SQL 권리이며 모든 db 언어로 별칭을 설정합니까? 아니면 이것은 certiain db에서만 작동합니다. – deed02392