我正在尝试使用相同的列(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)
我收到此错误:
如何加入这两张桌子?
答案 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获得的。因此,如果您的表单超过三个或更少,您的查询应该动态创建,并将每个表与前一个表连接。
:)如果有人觉得有用,那就很开心。