MySQL - 在表2中的同一列上连接表1中的两个表,不同列

时间:2013-10-13 00:38:47

标签: mysql join

我正在尝试使用相同的列(part_type_n,primary,autoinc)加入Table1上的其他列(id(其中n的范围为1到54)) Table2

架构:

Table1
==============
part_type_1
.
.
.
part_type_54



Table2
=============
id

我尝试了明显的查询(php生成,循环遍历n从1到54),省略重复的东西......:

SELECT * FROM Table1 JOIN Table2 on (Table1.part_type_1=Table2.id), ..., (Table1.part_type_54=Table2.id)

我收到此错误:

1066 - 不唯一的表/别名:'Table2'

如何加入这两张桌子?

3 个答案:

答案 0 :(得分:0)

你必须多次自己加入桌子。

SELECT * FROM table1 t1 
INNER JOIN table2 t2 on t2.Id=t1.part_type_1 
INNER JOIN table2 t3 on t3.id = t1.part_type_54;

希望这有帮助!

答案 1 :(得分:0)

作为使用54个表别名编写查询的替代方法,您可以考虑一次加入该表 - 如下所示:

select ...
from Table1 t1
join Table2 t2
  on t2.id in (t1.part_type_1, t1.part_type_2, ... t1.part_type_54)

答案 2 :(得分:0)

我可以获得我所需的结果,其中一行匹配所有存储在一个表列中的各种类别。

<强>查询

       SELECT cm3.*, xp.post_title,GROUP_CONCAT(DISTINCT sc.name) AS cate_list
       FROM `xld_posts` xp 
       JOIN course_map cm0 ON cm0.course_id = xp.ID
       JOIN course_map cm1 ON cm1.course_id = cm0.course_id  AND cm0.id = 3
       JOIN course_map cm2 ON cm2.course_id = cm1.course_id  AND cm1.id = 6
       JOIN course_map cm3 ON cm3.course_id = cm2.course_id  AND cm2.id = 11
       JOIN subject_category sc ON cm3.id = sc.id
       GROUP by post_title ORDER BY post_title

注意:类别值3,6和7是从形式sumbit获得的。因此,如果您的表单超过三个或更少,您的查询应该动态创建,并将每个表与前一个表连接。

:)如果有人觉得有用,那就很开心。