加入存储在结果列中的表

时间:2011-04-14 15:16:20

标签: mysql join

我想尝试将此作为一个查询而不是使用PHP,但事实证明这很难。

我有一个名为applications的表,它存储所有应用程序和一些有关它们的基本信息。 然后,我有一个包含所有类型的应用程序的表,该表包含对另一个表的引用,该表存储有关特定应用程序类型的更多特定数据。

select applications.id as appid, applications.category, type.title as type, type.id as tid, type.valuefld, type.tablename
from applications
left join type on applications.typeid=type.id
left join department on type.deptid=department.id
where not isnull(work_cat)
and  work_cat != ''
and applications.deleted=0
and datei between '10-04-14' and '11-04-14'
order by type, work_cat

现在,在旧版本中,每个结果都有另一个查询。超过数百个结果......太糟糕了。

这是我要集成的查询,因此我可以在一个结果行中获取所有数据。 (旧的是ASP,我用PHP重写它)

query = "select sum("&adors.fields("valuefld")&") as cost, description from "&adors.fields("tablename")&" where appid = '"&adors.fields("tablename")&"'"

我知道,准备好的陈述是最好的解决方案,但目前它们不是一种选择。

1 个答案:

答案 0 :(得分:0)

您无法使用纯SQL查询执行此操作 - 您需要具有查询所基于的已定义的一组表。从第一个结果集中tablename命名的当前实现从任何表中查询的事实意味着要在一个查询中获取所有这些,您将不得不重新构建数据。您必须知道您要查询的表格,而不是让它动态化。

如果这些不同表的原因是存储在每个需要不同记录(列)结构的不同信息中,您可能希望查看大表中的键/值对存储。将动态命名的组合合并到一个位置后,您可以将两个查询集成在一起。