我在SQL上的基礎很薄弱,所以我希望你能忍受我。我有三個表格:內容,類別和分類。由於某些內容屬於一個或多個類別,因此選擇了該設置。SQL查詢優化幫助
我想獲取內容及其相應的類別。
這是當前腳本的過於簡化的版本,而不會出現錯誤檢查程序:
$q = "SELECT * FROM contents WHERE contents.foo = 'bar'"
$resource = mysql_query($q);
$categoryFilter = array();
$q2 = "SELECT * FROM categorization WHERE ";
while($content = mysql_fetch_assoc($resource))
{
$categoryFilter[] = "content_id='" . $content["id"] . "'";
}
if(count($categoryFilter))
{
$q2 .= implode(" OR ", $categoryFilter);
mysql_query($q2);
}
這是它的要點。我希望你能得到我想要做的。我不知道我是否實際上可以使用JOINS,content_id
可能在categorization
的多行中出現。所以我所做的只是簡單地附加多個OR
's,試圖一個一個地獲取項目。我真的不想在這種情況下使用多個查詢。我希望任何人都可以提出一個方法
感謝您的時間
謝謝回答。我可能不想使用JOINS的原因是一個內容可能屬於5個或更多類別。我從'content'表中返回了很多數據,因爲我真的需要它們。一列實際上是來自富文本(WYSIWYG)編輯器的數據。所以你可以期望該列至少有1kb。我不想讓JOINS重複這些列。我需要的是類別ID。 –
@Ronlando:在這種情況下,我寧願使用兩個查詢:一個從內容表中選擇必要的列;另一個只選擇category_id和category_name(上面的那個)。如果您沒有在select子句中指定* lots_of_data *列,則查詢將不會返回它。 –