[SQL] 어떻게 CodeIgniter의의 활동 기록에이 SQL을 다시 작성할 수 있습니까?
SQL어떻게 CodeIgniter의의 활동 기록에이 SQL을 다시 작성할 수 있습니까?
SELECT *, SUM(tbl.relevance) AS relevance FROM
(
(
SELECT q_id,
MATCH(a_content) AGAINST ('бутон') AS relevance
FROM answers
WHERE
MATCH(a_content) AGAINST ('бутон')
)
UNION
(
SELECT q_id,
(MATCH(q_content) AGAINST ('бутон')) * 1.5 AS relevance
FROM questions
WHERE
MATCH(q_content) AGAINST ('бутон')
)
) AS tbl
JOIN questions ON questions.q_id = tbl.q_id
GROUP BY tbl.q_id
ORDER BY relevance DESC
해결법
-
==============================
1.CodeIgniter는 현재의 액티브 레코드 클래스의 서브 쿼리를 지원하지 않습니다.
CodeIgniter는 현재의 액티브 레코드 클래스의 서브 쿼리를 지원하지 않습니다.
당신은 단순히이를 사용해야합니다 :
$this->db->query($your_query, FALSE);
CodeIgniter의 검색어를 탈출하지 않도록, 그 두 번째 인수를 전달해야합니다.
-
==============================
2.그런데 참으로 CodeIgniter의에서 하위 쿼리에 대한 간단한 해킹있다. 당신은 다음을 수행해야 시스템 / 데이터베이스 / DB_active_rec.php로 이동
그런데 참으로 CodeIgniter의에서 하위 쿼리에 대한 간단한 해킹있다. 당신은 다음을 수행해야 시스템 / 데이터베이스 / DB_active_rec.php로 이동
거기 당신은 버전 2.0 이상 변경이를 사용하는 경우
public function _compile_select($select_override = FALSE) public function _reset_select()
공공 키워드를 제거하고 당신은 하위 쿼리를 사용할 수 있습니다 그리고 지금
$data = array( "q_id", "MATCH(a_content) AGAINST ('?????') AS relevance" ); $this->db->select($data); $this->db->from("answers"); $this->db->where("MATCH(a_content) AGAINST ('?????')"); $subQuery1 = $this->db->_compile_select(); // Reset active record $this->db->_reset_select(); unset($data); $data = array( "q_id", "(MATCH(q_content) AGAINST ('?????')) * 1.5 AS relevance" ); $this->db->select($data); $this->db->from("questions"); $this->db->where("MATCH(q_content) AGAINST ('?????')"); $subQuery2 = $this->db->_compile_select(); // Reset active record $this->db->_reset_select(); unset($data); $data = array( "q_id", "SUM(tbl.relevance) AS relevance" ); $this->db->select($data); $this->db->from("$subQuery1 UNION $subQuery2"); $this->db->join("questions","questions.q_id = tbl.q_id"); $this->db->group_by("tbl.q_id"); $this->db->order_by("relevance","desc"); $query = $this->db->get();
-
==============================
3.당신은 하위 쿼리없이이 쿼리를 시도 했습니까? 나는 당신이 왼쪽 조인 및 IS NOT NULL의 사용과 서브 쿼리의 사용없이 그것을 할 수 있다고 생각합니다.
당신은 하위 쿼리없이이 쿼리를 시도 했습니까? 나는 당신이 왼쪽 조인 및 IS NOT NULL의 사용과 서브 쿼리의 사용없이 그것을 할 수 있다고 생각합니다.
from https://stackoverflow.com/questions/10502778/how-can-i-rewrite-this-sql-into-codeigniters-active-records by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 심지어 테이블에 존재하지 않는 IN 목록의 요소에 대한 결과를 반환 (0) | 2020.06.18 |
---|---|
[SQL] 룸 예약 쿼리 (0) | 2020.06.18 |
[SQL] 날짜 비교 비정상적인 결과를 반환 - SQL 오라클 (0) | 2020.06.18 |
[SQL] 이동 세포는 왼쪽이 null이 포함 된 경우 SQL에서 왼쪽과 오른쪽 값을 포함 (0) | 2020.06.18 |
[SQL] SQL의 평균을 반올림 때 어떻게 소수를 검색 할 (0) | 2020.06.17 |