0

我正在尝试将不同的列(part_type_n(其中 n 的范围从 1 到 54))与 上Table1的同一列(id、primary、autoinc)连接起来Table2

架构:

表格1
===============
part_type_1
.
.
.
part_type_54



表2
==============
ID

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

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

我收到此错误:

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

我如何加入这两个表?

4

3 回答 3

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。因此,如果您的表单超过三个或更少,您的查询应该动态创建并将每个表与前一个表连接起来。

:) 如果有人觉得有用,我们会很高兴。

于 2014-08-30T10:57:47.713 回答
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)
于 2013-10-13T09:02:10.567 回答
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;

希望这可以帮助!

于 2013-10-13T00:46:43.893 回答