首页 > 解决方案 > 如何连接具有多个条件的多个表

问题描述

我有六张桌子

在线交易

| date | id | supplier_id | product code |

online_transaction_enc

| date | id | item |

离线交易

| date | id |

offline_transaction_enc

| date | id | item |

产品

| type | product_code |

供应商

| supplier_id | country |

选择日期在“2018 年 6 月 1 日”和“2018 年 7 月 30 日”之间的计数(项目)和类型=“家庭”和国家/地区=“马来西亚”

这些大致是我想要实现的。我想在日期和 ID 上合并线上和线下的项目,以便我将所有项目组合起来,然后再满足其他要求。如何在 MySQL 中做到这一点?

标签: mysqlsqlinner-join

解决方案


尝试这个:

 select count(a.item) from 
    (select date, id, item from online_transaction_enc
    union 
    select date, id, item from offline_transaction_enc)a
    inner join 
    (
    select  date,id,supplier_id,productcode from online_transaction
    union 
    select  date,id,supplier_id,productcode from offline_transaction)b
    on a.date=b.date and a.id=b.id
    inner join supplier on b.supplier_id=supplier.supplier_id
    inner join products on b.productcode=products.product_code
    where a.date between '20180601' And '20180730' AND Type='household' AND country='Malaysia'

推荐阅读