2013-07-26 43 views
-2
SELECT r.`root_cat_name`, 
     r.`root_cat_id`, 
     s.`sub_cat_name`, 
     s.`sub_cat_id` 
    FROM `root_category` AS r 
    INNER JOIN `sub_category` AS s ON r.`root_cat_id` = s.`sub_cat_id` 
    ORDER BY r.`root_cat_id` DESC 

我想从2个表中获取数据,其中root_cat_id是主键。
我想显示所有子类别。这是mysql查询正确的从两个表中获取数据

根猫:

id root_cat_name 
-- ----- 
1 item1 
2 item2 

SUBCAT:

id root_cat_id sub_cat_name 
-- ----------- ------ 
1 1   abc 
2 1   sadj 
3 2   asd 
4 1   asdasd 
+0

问题是什么? – araknoid

+0

它不能正确使用所示的表格......没有列'root_cat_name'。 它看起来像加入应该是'ON r.id = s.root_cat_id'虽然 –

+0

btw我推荐这个网站作为调试和分享你的SQL问题的好方法: http://sqlfiddle.com/ –

回答

0

这是否工作:

SELECT r.root_cat_name, 
    r.root_cat_id, 
    s.sub_cat_name, 
    s.sub_cat_id 
FROM root_category AS r 
INNER JOIN sub_category AS s ON r.id = s.root_cat_id 
ORDER BY r.id DESC 

一切都在“R”必须从root_category列名,一切都很在“s”必须成为子类别中的列名称

1
INNER JOIN `sub_category` s ON r.`root_cat_id` = s.`sub_cat_id` 

应该

INNER JOIN `sub_category` s ON r.`id` = s.`root_cat_id` 

=>您需要使用的列名,因为它们是在定义表

编辑: 同样的原则适用于您的SELECT。 如果你想有显示的另一列名,用AS

SELECT r.id AS root_id, ... 
相关问题