查询从具有2个ID列的表中获取名称
问题描述:
我有2个表。首先有一个像查询从具有2个ID列的表中获取名称
id (int)
parent_id (int)
category_name (varchar)
结构的第二个具有类似的结构:
id (int)
old_category (int)
new_category (int)
我想进行查询拉老品类和新的类别名称都在为父母一个查询。也就是说,我想获取旧父级的名称,然后获取新父级的名称。第二个表格包含第一个表格中所有父级ID更改的历史列表。我怎样才能做到这一点?谢谢!
答
我将以此来猜测你的意思:
tblOne
ID
cat_name
tblTwo
ID
tblOneId(old_cat)诠释
new_cat INT
select * from tblOne t1, tblTwo t2 Where t1.id = t2.tblOneId
答
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
。
答
加入他们?
select * from table1
join table2 j1 on table2.id = table1.old_category
join table2 j2 on table2.id = table1.new_category
答
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后缀?
来吧,这是简单的加入... – 2010-11-29 22:19:49
@barti_ddu:每个人都从某个地方开始。还是你出生的简单连接编码到你的DNA? – Stephen 2010-11-29 22:23:27