查询从具有2个ID列的表中获取名称

时间:2010-11-29 22:16:35

标签: sql mysql

我有2张桌子。第一个有像

这样的结构
id (int)
parent_id (int)
category_name (varchar)

第二个结构如下:

id (int)
old_category (int)
new_category (int)

我想进行查询以在父查询的一个查询中拉出旧类别和新类别名称。也就是说,我想获取旧父级的名称,然后获取新父级的名称。第二个表包含第一个表中所有父ID更改的历史列表。我怎样才能做到这一点?谢谢!

4 个答案:

答案 0 :(得分:1)

   SELECT old_cat.category_name, new_cat.category_name
     FROM join_table
LEFT JOIN category_table as old_cat
       ON old_cat.id = join_table.old_category
LEFT JOIN category_table as new_cat
       ON new_cat.id = join_table.new_category;

如果你已经设法做到这一点,那么就该停止编码并开始学习MySQL JOIN Syntax了。

答案 1 :(得分:0)

我会猜测你的意思:

<强> tblOne

ID

cat_name

<强> tblTwo

ID

tblOneId(old_cat)int

new_cat int

select * from tblOne t1, tblTwo t2 Where t1.id = t2.tblOneId

答案 2 :(得分:0)

加入他们?

select * from table1
  join table2 j1 on table2.id = table1.old_category
  join table2 j2 on table2.id = table1.new_category

答案 3 :(得分:0)

SELECT
  t.id,
  t.old_category,
  oc.category_name as old_category_name,
  t.new_catevory,
  nc.category_name as new_category_name
FROM
  table1 t
  INNER JOIN table2 oc on oc.id = t.old_category
  INNER JOIN table2 nc on nc.id = t.new_category

我会认真考虑对列名进行一些修改,顺便说一句。首先:为什么table2中的类别没有id后缀?