我有关于内连接,左连接命令的问题。
我的类别表是:
ID | parent | title 1 | 0 | First Category 2 | 1 | Other Category
我有列表分类,我想在sql命令获得父类别标题。
我试过了:
SELECT cat.ID, cat.title, cat2.title as parentcatname, cat.parent
FROM categories cat INNER JOIN categories cat2 ON cat2.ID=cat.parent
但是没有用。
答案 0 :(得分:1)
您必须使用LEFT JOIN
才能提取所有类别,无论他们是否为父类别。 INNER JOIN
过滤掉所有不匹配项。
SELECT c.id, c.title, c.parent, p.title parent_title
FROM categories c LEFT JOIN categories p
ON c.parent = p.id
输出:
| ID | TITLE | PARENT | PARENT_TITLE | ------------------------------------------------- | 1 | First Category | 0 | (null) | | 2 | Other Category | 1 | First Category |
这是 SQLFiddle 演示
答案 1 :(得分:0)
如果您想获取所有父类别,请尝试查询
SELECT cat_id FROM categories WHERE parent=0;
如果您想获得类别的父类别
SELECT C.cat_id,P.title FROM categories C LEFT JOIN category P ON P.parent = C.cat_id;
我没有测试过上面的代码,但它应该可以正常工作。
答案 2 :(得分:0)
您可以随时通过将SQL输入验证器(在线加载),phpMyAdmin的SQL选项卡或带有SQL验证的编辑器来调试SQL。它看起来像你在类别表选择附近有一个小错字。
如果您的SQL不能正常工作,请务必将其愚蠢。请注意,JOIN(内部,左侧,右侧等)用于连接两个或更多表。
SELECT
one.ID, one.title, one.parent, one.title, one.parent, one.title
FROM
categories one
LEFT JOIN
categories two
ON
one.parent = two.ID