MYSQL>使用查询作为表

时间:2013-10-06 00:05:38

标签: mysql

我忘了一个老师告诉我的技巧,允许选择查询作为你的表(假设只有部分数据库用于重复条目)......

  

THIS_FUNCTION(从OneTable tabA中选择链接,东西,条件,其中condition = IGotSomething)

     

THIS_FUNCTION(从OneTable tabB中选择链接,东西,条件,其中condition = IlostSomething)

     

选择tabA.things - tabB.things from tabA inner join tabB on tabA.link = tabB.link

类似的东西。

有人帮我记住了吗?


如果有人要求...我的数据库使用一个表来处理进出的所有事务,由一个列所在的东西定义。为了得到所有东西的清单,我需要看看东西来自哪里(-stock)和东西(+库存)。

在某些情况下,它会来自哪里。

我已经知道如何做到这一点,但我需要这个技巧,我忘了......


糟糕!我忘了提到我需要能够在运行时根据用户需求构建这些查询。这是可定制的,因此构建和重建视图可能会占用比预期更多的进程。

1 个答案:

答案 0 :(得分:0)

编辑:这是一种方式:

CREATE PROCEDURE this_function()
BEGIN
  Select link, things, conditions from OneTable tabA where conditions = IGotSomething;
END

然后:

CALL this_function();

这是另一种方式,但它会在您的数据库中创建新表:

CREATE ALGORITHM = UNDEFINED VIEW `tabA` AS Select link, things, conditions from OneTable tabA where conditions = IGotSomething;

CREATE ALGORITHM = UNDEFINED VIEW `tabB` AS Select link, things, conditions from OneTable tabB where conditions = IlostSomething;

然后:

Select tabA.things - tabB.things from tabA inner join tabB on tabA.link = tabB.link