MySQL:在记录集中具有表名的表上选择

时间:2010-08-28 15:01:56

标签: mysql sql

我想一步到位,所以我想知道如何:

表a(documents)具有:pk,document_id,template_id

表b(templates)具有:pk,template_id,template_table_name

表c(template_table_name_1)有:pk,document_id,document_specific_columns

所以...我想查询表a,获取document_id和template_id然后使用表b我想从表c中获取document_specific_columns。 PS:在表a中可以是具有相同document_id但不同template_id的更多记录 我觉得意图非常清楚,我唯一不知道该怎么做的是引用将模板_table_name返回给表的子查询的FROM子句

1 个答案:

答案 0 :(得分:1)

最简单的方法是在客户端上构建SQL查询。

因此,第一个SQL查询将是

select   t.template_table_name
from     templates    t, 
         documents    d
where    d.template_id = t.template_id
and      d.document_id = @param_document_id

然后,您将在您的客户端上构建第二个SQL查询,以从任何template_table_name中选择*。

如果要在数据库的一次运行中完成所有操作,则必须在存储过程中执行此操作。 MySQL不支持动态SQL,但您可以通过创建预准备语句来作弊。

http://forums.mysql.com/read.php?60,3127,6260#msg-6260