【问题标题】:Get results of three queries into one table将三个查询的结果放入一张表中
【发布时间】:2016-05-04 07:17:55
【问题描述】:

情况是这样的,

我有一个带有下拉菜单(全部、类别、类别类型、产品)和搜索按钮的界面。每个部分有三个数据库表,分别为 CATEGORY、CATEGORYTYPE 和 PRODUCT 当用户选择 All 选项搜索时,我会从所有三个表中获取结果并显示在 HTML 表中。

要进行分页,我想从所有表中逐组获取结果。

这是我正在使用的三个查询:

SELECT CATNAME,CATDESC,CATSTATUS FROM CATEGORY WHERE CATNAME like %a%

SELECT CATTYPENAME,CATTYPEDESC,CATTYPESTATUS FROM CATEGORYTYPE WHERE CATTYPENAME like %a%

SELECT PRODUCTNAME,PRODUCTDESC,PRODUCTSTATUS FROM PRODUCT WHERE PRODUCTNAME like %a%

从所有表中,我只获取想要组合三个查询的同一组列。我希望我的问题是可以理解的。这与连接三个表无关。我希望所有三个查询的结果作为一个集合或记录并对其进行分页。

提前感谢您的任何建议,如果问题不清楚,请提出。

该应用程序基于 JAVA EE。使用 Struts,DB 是 MySQL。

【问题讨论】:

  • 您可以在 MySQL 中创建一个视图,使用 union 来合并三个表中的数据。如果我正确理解了这个问题。
  • @esranga:你的意思是我在那些表中输入数据的时候?或者有时我会这样做?
  • 当用户选择“全部”时,您使用视图获取数据。
  • 我应该什么时候生成视图?
  • 创建视图的方式与创建表的方式相同。见:dev.mysql.com/doc/refman/5.7/en/create-view.html

标签: mysql sql


【解决方案1】:

使用视图你可以做你想做的事。 首先,您必须将列标题更改为相同。喜欢

SELECT NAME,DESCRIPTION,STATUS FROM CATEGORY WHERE NAME like %a%
SELECT NAME,DESCRIPTION,STATUS FROM CATEGORYTYPE WHERE NAME like %a%
SELECT NAME,DESCRIPTION,STATUS FROM PRODUCT WHERE NAME like %a% 

然后你可以像这样创建视图

CREATE VIEW V AS
SELECT *
FROM ((CATEGORY NATURAL FULL OUTER JOIN CATEGORYTYPE)
    NATURAL FULL OUTER JOIN PRODUCT);

附注如果无法更改列标题,则必须根据该表的列更改视图

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多