【问题标题】:Create a SQL table using JOIN使用 JOIN 创建 SQL 表
【发布时间】:2022-01-27 10:19:48
【问题描述】:

我将原始表拆分为 3 个表,现在我想创建一个与原始表等效的表/视图,但我根本无法让它工作。下面:

CREATE TABLE BUSINESS_DATES
AS(
    SELECT
        ttxid, 
        dba_start_date, 
        dba_end_date, 
        location_start_date, 
        location_end_date
    FROM BUSINESSLOCATION
    ORDER BY dba_start_date
) WITH DATA;
CREATE TABLE BUSINESS_OWNERS
AS(
    SELECT
        ttxid, 
        certificate_number, 
        ownership_name, 
        dba_name
    FROM BUSINESSLOCATION
) WITH DATA;
CREATE TABLE BUSINESS_INFO
AS(
    SELECT 
        ttxid, 
        full_business_address, 
        city, 
        state, 
        business_zip, 
        mailing_address_1
    FROM BUSINESSLOCATION
) WITH DATA;

我用来合并所有表的SQL命令:

CREATE VIEW ORIGINAL_TABLE
AS (
    SELECT *
    FROM BUSINESS_DATES AS BD
    LEFT JOIN BUSINESS_OWNERS AS BO
        ON BA.ttxid = BO.ttxid
) WITH DATA;

【问题讨论】:

  • 您的实际数据库是 MySQL 还是其他?
  • 我现在在 IBM i 中使用 SQL
  • 如果您不使用 MySQL,请不要使用 mysql 标签。我已经删除了那个标签,你应该添加你实际使用的 DBMS。
  • @ProjectDestoryer,您想将所有表合并到视图中,但您似乎只取了三个表中的两个,您的连接中没有包含 BUSINESS_INFO 表来创建原始表,只需包含它,您就可以开始了。

标签: sql database database-design ibm-integration-bus


【解决方案1】:

这应该可以工作,因为原始表无论如何都来自 BUSINESSLOCATION。

CREATE VIEW ORIGINAL_TABLE AS(
    SELECT "ttxid", "dba_end_date", "location_start_date", "location_end_date", 
            "certificate_number", "ownership_name", "dba_name", "full_business_address",
            "city", "state", "business_zip", "mailing_address_1"
    FROM BUSINESSLOCATION
) WITH DATA;

另一种选择是将您的三个表在 ttxid 上连接在一起,类似于您尝试过的。

CREATE VIEW ORIGINAL_TABLE AS(
    SELECT *
    FROM BUSINESS_DATES BD
    LEFT JOIN BUSINESS_OWNERS BO ON BO.ttxid = BD.ttxid
    LEFT JOIN BUSINESS_INFO BI ON BI.ttxid = BD.ttxid
) WITH DATA;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    相关资源
    最近更新 更多