我在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 *列,则查询将不会返回它。 –