通过连接7个表创建SQL视图

时间:2015-08-17 06:36:33

标签: mysql join mysql-workbench sql-view

我想通过加入7个表创建一个视图。我也创建了,但它没有显示我用来加入的真实表格中的任何数据。

在第一天,我通过仅加入2个表来创建视图。它运行良好并显示数据,

CREATE VIEW tbi_dd_detail_view AS
SELECT 
    d.dd_metric_config_id,
    d.metric_name,
    d.keywords,
    d.domain_id,
    d.is_active,
    c.dd_query_id,
    c.datasource_id,
    c.query,
    c.virtual_query_name
FROM
    tbi_dd_config_master d
        JOIN
    tbi_dd_custom_query_config c ON d.dd_metric_config_id = c.dd_metric_config_id  

示例数据:

enter image description here 类似地,我为7个表创建了视图。它创建了,但没有显示任何数据

CREATE VIEW tbi_dd_detail_view AS
    SELECT 
        d.dd_metric_config_id,
        d.metric_name,
        d.keywords,
        d.domain_id,
        d.is_active,
        d.created_by,
        d.created_date,
        c.dd_query_id,
        c.datasource_id,
        c.query,
        c.virtual_query_name,
        v.dd_dataview_id,
        v.dataview_id,
        b.dd_dashboard_id,
        b.dashboard_id,
        r.dd_report_id,
        r.report_id,
        r.report_type_name,
        r.virtual_report_name,
        t.dd_table_view_id,
        t.data_source_id,
        t.table_view_id,
        t.virtual_table_name,
        w.dd_webservice_id,
        w.password,
        w.username,
        w.virtual_webservice_name,
        w.webservice_url
    FROM
        tbi_dd_config_master d
            JOIN
        tbi_dd_custom_query_config c ON d.dd_metric_config_id = c.dd_metric_config_id
            JOIN
        tbi_dd_dataview_config v ON d.dd_metric_config_id = v.dd_metric_config_id
            JOIN
        tbi_dd_dashboard_config b ON d.dd_metric_config_id = b.dashboard_id
            JOIN
        tbi_dd_report_config r ON d.dd_metric_config_id = r.dd_metric_config_id
            JOIN
        tbi_dd_table_view_config t ON d.dd_metric_config_id = t.dd_metric_config_id
            JOIN
        tbi_dd_webservice_config w ON d.dd_metric_config_id = w.dd_metric_config_id  

我搜索了一些链接并尝试了不同的方法来创建视图,但不幸的是我最终得到了相同的结果

CREATE VIEW tbi_dd_detail_view AS
    SELECT 
        d.dd_metric_config_id,
        d.metric_name,
        d.keywords,
        d.domain_id,
        d.is_active,
        d.created_by,
        d.created_date,
        c.dd_query_id,
        c.datasource_id,
        c.query,
        c.virtual_query_name,
        v.dd_dataview_id,
        v.dataview_id,
        b.dd_dashboard_id,
        b.dashboard_id,
        r.dd_report_id,
        r.report_id,
        r.report_type_name,
        r.virtual_report_name,
        t.dd_table_view_id,
        t.data_source_id,
        t.table_view_id,
        t.virtual_table_name,
        w.dd_webservice_id,
        w.password,
        w.username,
        w.virtual_webservice_name,
        w.webservice_url
    FROM
        tbi_dd_config_master d,
        tbi_dd_custom_query_config c,
        tbi_dd_dataview_config v,
        tbi_dd_dashboard_config b,
        tbi_dd_report_config r,
        tbi_dd_table_view_config t,
        tbi_dd_webservice_config w
    WHERE
        d.dd_metric_config_id = c.dd_metric_config_id
            AND d.dd_metric_config_id = v.dd_metric_config_id
            AND d.dd_metric_config_id = b.dashboard_id
            AND d.dd_metric_config_id = r.dd_metric_config_id
            AND d.dd_metric_config_id = t.dd_metric_config_id
            AND d.dd_metric_config_id = w.dd_metric_config_id  

有人可以找出并帮助我在哪里做错了吗?

加入3个表并输出:
enter image description here

1 个答案:

答案 0 :(得分:0)

如果没有表格定义,很难建议选项。

首先,您应该连接两个表来创建视图,并在连接条件中一次添加另一个表,并测试视图无法显示预期结果。

您还可以使用LEFT JOIN并在查询末尾添加group by子句,看看会发生什么......

示例:

使用LEFT JOIN并在查询末尾添加group by d.dd_metric_config_id