2013-04-12 38 views
0

我想运行多个SQL查询,所有相互依赖。多个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,但我似乎无法找到任何接近我正在做的事情。有人可以帮助我制作一个能正常工作的查询吗?

在此先感谢您的帮助!

EDIT

两个表是exp_br_product_category,其存储对产品及其各自的类别和exp_br_category信息,该信息从网站存储所有的类别信息(包括类的父ID和URL标题)。

+0

“不起作用”是什么意思?你有错误信息吗?你有错误的价值吗? –

+0

@ MikeSherrill'Catcall'该页面会引发500错误。 – michaelrmcneill

+3

了解连接http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html – xQbert

回答

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错误的原因。这很可能是一个网络服务器配置错误,可能是您的.htaccess文件中的一个错误,或者不太可能,使用特定的PHP和Web服务器配置,只是PHP文件中的语法错误。

+0

感谢@pilsetnieks。我正在阅读连接,但一个简单的问题,我现在如何从这个返回的内容中声明一个PHP变量? – michaelrmcneill

+0

您不能直接在PHP代码中编写SQL,您需要以某种方式执行SQL代码并检索值。也许你应该从这样的事情开始:http://www.databasejournal.com/features/mysql/article.php/3599166/Connecting-and-prepared-statements-with-the-mysqli-extension.htm – pilsetnieks