MySQL多个内部联接

亚伦

我有两个要从中获取信息的表。

可以说table1具有以下列(id,标题,类别,sub_category,sub_sub_category)

可以说table2具有以下列(category_id,category_name)

到目前为止,我有一条select语句如下:

SELECT
  table1.id,
  table1.title,
  table2.category_name as Cat1,
  table2.category_name as Cat2,
  table2.category_name as Cat3
FROM
  table1,
  table2
INNER JOIN table2 as c1 ON c1.category_id = table1.category
INNER JOIN table2 as c2 ON c2.category_id = table1.sub_category
INNER JOIN table2 as c3 ON c3.category_id = table1.sub_sub_category
WHERE
  table1.id = ?

这给我关于table1.category是未知列的错误

我也尝试过

SELECT
  table1.id,
  table1.title,
  table2.category_name as Cat1,
  table2.category_name as Cat2,
  table2.category_name as Cat3
FROM
  table1,
  table2
WHERE table1.id = ?
AND   table1.category = table2.category_id
AND   table1.sub_category = table2.category_id
AND   table1.sub_sub_category = table2.category_id

最后一个示例至少为我提供了我正在寻找的列输出

(table1.id,table1.title,table1.category名称,table1.sub_category名称...)

因此,显示表2中的类别名称而不是ID。我是一名业余编码员,以前没有使用内部联接的方法,但是也许这是我需要做的。我只是不知道如何获取它来输出所需的数据。

预先感谢您的时间和考虑。

戈登·利诺夫(Gordon Linoff)

您的问题是该from子句中有逗号简单规则:切勿在from子句中使用逗号始终使用显式join语法。

然后,您还table2提到了额外的时间,并且您select正在从错误的实例提取列table2

固定查询如下所示:

SELECT t1.id, t1.title,
       c1.category_name as Cat1, c2.category_name as Cat2,
       c3.category_name as Cat3
FROM table1 t1 INNER JOIN
     table2 c1
     ON c1.category_id = t1.category INNER JOIN
     table2 c2
     ON c2.category_id = t1.sub_category INNER JOIN
     table2 c3
     ON c3.category_id = t1.sub_sub_category
WHERE t1.id = ?;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章