【问题标题】:What is the best way to combine these datasets to get my desired format?组合这些数据集以获得所需格式的最佳方法是什么?
【发布时间】:2019-04-20 00:04:04
【问题描述】:

做一些 ELT 工作...
将这些数据集组合成所需输出形式的最佳方法是什么:

数据集 A:

| project_id1 | types1 |  
A, apple  
B, banana  

数据集 B:

| project_id1 | project_id2 | types2 |  
A, 15, strawberry    
A, 25, onion  
B, 5, peach  

期望的结果:

| project_id1 | project_id2 | types |  
A, 15, strawberry  
A, 15, apple  
A, 25, onion  
A, 25, apple  
B, 5, peach  
B, 5, banana  

这种组合有名称吗?

【问题讨论】:

  • 你用的是什么数据库?
  • @zedfoxus 数据来自 mysql...虽然我认为数据库类型在我做 ELT 时不重要...我可以使用各种不同的工具来做 ELT,我可以组合数据库类型使用这些工具,所以我认为这应该与数据库无关。

标签: join union


【解决方案1】:

您可以通过以下方式获取该信息:

表格

create table da (
    project_id1 char(1),
    types1 varchar(100)
);

insert into da values
('A', 'apple'),
('B', 'banana');

create table db (
    project_id1 char(1),
    project_id2 int,
    types2 varchar(100)
);

insert into db values
('A', 15, 'strawberry'),
('A', 25, 'onion'),
('B', 5, 'peach');

查询

select * from (

    select da.project_id1, db.project_id2, da.types1 as types
    from da
    inner join db on da.project_id1 = db.project_id1

    UNION ALL

    select db.project_id1, db.project_id2, db.types2 as types
    from db
) x

order by project_id1, project_id2, types desc;

结果

project_id1 project_id2 types
A                 15    strawberry
A                 15    apple
A                 25    onion
A                 25    apple
B                  5    peach
B                  5    banana

示例

https://rextester.com/ISQA20343

我不知道这种数据合并的名称。

【讨论】:

  • 谢谢,虽然它不是我所期望的格式,但这可以完成工作。
  • 太棒了。如果您觉得合适,您可以通过等待您可以接受的其他答案或将此答案标记为已接受来结束您的问题。您的选择。
猜你喜欢
  • 2020-02-11
  • 1970-01-01
  • 2017-11-29
  • 2015-04-17
  • 2019-02-26
  • 2012-04-16
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多