저는 여전히 SQL을 사용하려고합니다. filter_thread ('filter_id'및 'thread_id'열 포함) 테이블과 필터 ('filter_id 및'tag ') 테이블'에서 thread_id를 꺼내는 쿼리를 작성했습니다.동일한 쿼리에서 INNER JOIN을 두 번 사용하십시오.
그런 다음 완전히 다른 쿼리를 사용하여 thread_id를 포함한 thread 테이블의 내용
나는 이것이 최선의 방법은 아니지만 성공적인 쿼리를 얻을 수 없다는 것을 알고 있습니다. 누구든지 도울 수 있을까요?
$query = "SELECT ft0.thread_id
FROM filter f0
INNER JOIN filter_thread ft0 ON ft0.filter_id = f0.filter_id
WHERE f0.tag LIKE '%filter1%'
OR f0.tag LIKE '%filter2%'"
$result = $query->result_array();
$thread = array();
foreach ($result as $thread_id)
{
$id = $thread_id['thread_id'];
$query = $this->db->query("SELECT * FROM thread WHERE thread_id='$id'");
$thisRow = $query->result_array();
array_push($thread, $thisRow[0]);
}
고맙습니다!
가 잘 작동합니다.. 고맙습니다. 유일한 문제는 일부 결과가 다시 복제되고 있다는 것입니다. 나는 그들이 filter1과 filter2 둘 다에서 발견 된 중복 문구를 공유한다면 그것이 일어난다 고 가정한다. 왜 이런 일이 일어날 지 모릅니다. –
아니요, 그렇게해서는 안된다고 생각한다면,'filter_thread' 테이블에 같은 thread_id를 가진 레코드가 여러 개 있거나'filter_id'를 가진'filter' 테이블에 여러 레코드가 있기 때문입니다. 이러한 중복 레코드가 예상되지만 결과 세트에 포함시키지 않으려면 중복을 제거하기 위해'DISTINCT' 키워드를 추가하십시오 ('SELECT DISTINCT t. * ...') – gonsalu
감사합니다. 그들은 내가하고 싶은 일에 기대되고 필요합니다. DISTINCT는 완벽하게 작동했습니다. 새로운 것을 배우는 것을 좋아합니다. –