0

我正在尝试运行多个相互依赖的 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,它存储有关产品及其各自类别的信息和 exp_br_category,它存储来自站点的所有类别信息(包括类别的父 ID 和 url 标题)。

4

1 回答 1

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() 聚合函数,而是按降序对结果进行了排序,并将查询限制为一个应该得到相同结果的结果。)

也许您可以在此处此处阅读有关连接的内容。

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

于 2013-04-12T23:58:34.053 回答