我仍然試圖獲取SQL的掛件。我構建了一個查詢,它從filter_thread(包含'filter_id'和'thread_id'列)表和一個過濾器('filter_id和'tag')表中取出thread_id's'在同一查詢中使用INNER JOIN兩次
然後,我使用完全不同的查詢來查找線程表的內容,其中包含'thread_id'。
我知道這不是最好的辦法,但無法獲得成功的查詢。任何人都可以提供幫助嗎?
$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中找到的重複短語,我認爲它會發生。任何想法爲什麼這可能會發生? – 2012-04-05 17:28:04
不,如果您認爲不應該發生,則可能是因爲'filter_thread'表中有多個相同'thread_id'的記錄,或者'filter_id'中的多個記錄存在'filter_id'。如果預期這些重複記錄,但您不希望它們放在結果集中,則可以添加一個「DISTINCT」關鍵字以消除重複(SELECT DISTINCT t。* ...') – gonsalu 2012-04-05 17:33:56
謝謝。他們是預期的,並且是我想要做的事情所必需的。 DISTINCT非常完美。愛學習新事物。 – 2012-04-05 17:37:41