寻找提高效率的最佳方法。我正在尝试创建多个查询,但在这种情况下,我需要从类别表中收集多个值,然后查找包含这些类别的所有项目,然后获取与其表中的完整信息匹配的项目。 (使用具有类别表左侧值的嵌套集)。
$sql = 'SELECT * FROM `categories_main`'
. ' WHERE `id`=:id';
$sql = 'SELECT `id`'
。 '来自categories_main
'。 '在哪里lft
> =:lft和rgt
<=:rgt';$inQuery = implode(',', array_fill(0, count($category_ids), '?'));
$sql = 'SELECT project_id, cat_id'
。 'FROM project_sites_categories_main'。 'WHERE cat_id IN('。$ inQuery。')';4.然后我拿出项目ID,实际上从他们的表中获得项目的完整项目。
$inQuery = implode(',', array_fill(0, count($project_ids), '?'));
$sql = 'SELECT * '
. ' FROM project_sites'
. ' WHERE id IN(' . $inQuery . ')';
任何方向都会很棒。我发现了一些教程和线程涉及到很多,但我似乎无法弄清楚如何使一个值的工作从表中获取来自另一个的链接文件。
非常感谢你提前帮助。我希望这是足够的信息。
它与你的查询真的没什么不同,但我认为使用exists而不是in not static值更好。
select * from project_sites
where id EXISTS (select project_id from project_sites_categories_main
where cat_id EXISTS (select id from categories_main
where lft >= :lft and <= :rgt)
PS:如果你想提高性能,你的查询不会使用select *
只是写你需要的列。