MySQL使用桥接表

时间:2015-08-17 21:33:03

标签: mysql join

我有两个数据源,一个跟踪产品,另一个跟踪财务信息。这两者没有共同的领域,但它们都与我们的计费系统有共同的领域。我想使用我们的计费系统数据作为我的两个来源之间的桥接表,以便我可以在一次分析中将产品数据连接到财务数据,而无需在我们的viz工具中进行混乱和缓慢的混合(例如 - 使用案例逻辑make product.client = finance.account ...不一致的命名约定是最糟糕的)。我基本上使用结算作为查询表,首先将产品加入计费,然后加入财务到我的新加入......我想。

我想创建三个mysql表,其中的字段沿着字母项。 1.产品    一个。客户    湾PROD_ID    C。尺寸    d。公 2.财务    一个。帐户    湾fine_id    C。量    d。国家 3.结算    一个。帐户    湾PROD_ID    C。 fine_id

我使用结算作为查询表首先将产品加入到结算中,以便我可以获取所有产品字段以及帐户和fine_id。然后我想加入第一次加入的金融。我可以使它在excel中工作,但是我们正在使用的数据规模(如果)此工具上线对于excel来说太大了,因此需要MySQL。我是否正确,我可以在MySQL的连接上实现这种类型的连接?我真的很感激有关加入我的财务表到下面的联接的任何语法指导。谢谢!

编辑后发布 - 加入语法,我的加入的正确顺序是什么?我得到的错误只是我的语法有错误。我使用下面的。我已经重新排序了几次,但我仍然缺少一些如何做到这一点的概念性内容。我想1.将产品加入到结算中(即使没有匹配也返回行)2。将财务加入产品/结算外部联接,以便我可以在同一个表中查看我的产品和财务数据。感谢所有的帮助!

select *
from
(select *
    from
    (select * from 
    lookup.product) as product_join
    left outer join
    (select *
    from lookup.billing) as billing_join
    on product_join.product_id = billing_join.product_id) as left # left join of billing to product
left outer join
    (select *
    from left) as left_join
    left outer join
    (select * from lookup.finance) as finance_join
    on left.finance_id = financef_join.finance_id) # joining of finance data to the left join of my product/billing

1 个答案:

答案 0 :(得分:1)

您的任务/问题:“我想创建三个mysql表 与沿着领域的领域  字母项目。

  1. 产品a。客户b。 prod_id c。大小d。度量
  2. 财务a。帐户b。 fine_id c。金额d。国家
  3. 结算a。帐户b。 prod_id c。 fine_id
  4. 我使用结算作为查询表首先将产品加入到结算中,以便我可以获取所有产品字段以及帐户和fine_id。然后我......“

    通过加入可以轻松实现:

    SELECT * From product, billing, finance
    WHERE  billing.account = finance.account
    AND billing.fine_id = finance.fine_id
    AND billing.prod_id = product.prod_id
    

    关于您的评论,如果相应的结算数据不存在且您希望结果中包含所有产品,则可以像这样使用左外部联接:

    SELECT * from product
    LEFT outer join billing
    ON product.prod_id = billing.prod_id 
    LEFT outer join finance
    ON billing.account = finance.account
    AND billing.fine_id = finance.fine_id;
    

    您不必在连接周围添加另一个“select *”。您可以像这样一起加入表格。