多个相互依赖的SQL查询

时间:2013-04-12 23:10:51

标签: php mysql

我正在尝试运行多个SQL查询,所有这些都依赖于彼此。

我现在得到的东西不起作用,所以我会展示我现在所拥有的东西,然后我将解释它需要做什么。

SET @sub_cat_id = SELECT MAX(category_id) FROM exp_br_product_category WHERE product_id = '1234';
SET @prim_cat_id = SELECT parent_id FROM exp_br_category WHERE category_id = @sub_cat_id;
SET @prim_cat_title = SELECT url_title FROM exp_br_category WHERE category_id = @prim_cat_id; 
SET @sub_cat_title = SELECT url_title FROM exp_br_category WHERE category_id = @sub_cat_id;
$title1 = SELECT @prim_cat_title;
$title2 = SELECT @sub_cat_title;

预期的输出应该是$ title1 = maincat和$ title2 = subcat。这样我们就可以从这两个最终变量构建一个URL。

我已经研究过stackoverflow,但我似乎无法找到任何与我正在做的事情相近的事情。有人可以帮我制作一个能正常运行的查询吗?

提前感谢您的帮助!

修改

这两个表是exp_br_product_category,它存储有关产品及其各自类别的信息,以及exp_br_category,它存储来自站点的所有类别信息(包括类别的父ID和URL标题)。

1 个答案:

答案 0 :(得分:1)

这可能是通过在查询中进行连接来检索数据的更好方法,即在单个查询中连接多个表:

SELECT
    prim_cat.url_title as prim_cat_title, sub_cat.url_title as sub_cat_title
FROM
    exp_br_product_category prod_cat,
    exp_br_category prim_cat,
    exp_br_category sub_cat
WHERE
    prod_cat.product_id = 1234 and
    prod_cat.category_id = sub_cat.category_id and
    prim_cat.category_id = sub_cat.parent_id
ORDER BY
    prod_cat.category_id desc
LIMIT 1

(我没有使用max()聚合函数,而是按降序对结果进行排序,并将查询限制为一个应得到相同结果的结果。)

也许您可能会阅读有关加入herehere的内容。

但是,无论查询是如何形成的,都不应该是500错误的原因。它很可能是Web服务器配置错误,可能是.htaccess文件中的错误,或者不太可能是特定的PHP和Web服务器配置,只是PHP文件中的语法错误。