在 Amazon Quicksight 上使用 SQL 从多个表中提取相同的列

Pulling the same column from multiple tables using SQL on Amazon Quick Sight

我正在使用 Amazon Quick Sight 从 MySQL 数据库中提取数据,为我的雇主生成视觉数据。我是一名学生,有一点 SQL 经验,但以前从未处理过这么大的数据库。

我需要从中获取的表是 001_leads 到 024_leads。这些表都是以相同的方式设计的。

这是我目前一直在做的无济于事。 Quick Sight 不会返回很好的错误警报,所以我一直在研究不同的解决方案。

SELECT 001_leads.lead_received AS "City-A Leads Q1", 002_leads.lead_received AS "City-B Leads Q1" FROM 001_leads, 002_leads WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'

我很确定我需要使用联接,但我不知道如何联接 24 个不同的表。

理想情况下,当此查询运行时,它将显示来自每个城市的每条线索。

感谢观看:)

编辑:

我认为 Union 是您所追求的...不完全确定,您问题的措辞。

例如

SELECT 001_leads.lead_received AS Leads
FROM 001_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'

UNION 

SELECT 002_leads.lead_received
FROM 002_leads
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'

更新

以下内容应该按照您所说的那样进行。

SELECT l1.lead_received AS LeadsCityA, l2.lead_received AS LeadsCityA, l3.lead_received AS LeadsCityA, l4.lead_received AS LeadsCityA
FROM 001_leads l1
LEFT JOIN 002_leads l2
    ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 003_leads l3
    ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
LEFT JOIN 004_leads l4
    ON lead_received BETWEEN '2017-01-01' AND '2017-04-01'
WHERE lead_received BETWEEN '2017-01-01' AND '2017-04-01'

除非你真的需要一个枢轴table,否则我建议使用联合并为每个潜在客户获取一行,就像@Darby 建议的那样:

SELECT *
FROM (
    SELECT 
        'CityA' as `city`,
        a.*
    FROM `001_leads` a
    WHERE a.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
    UNION
    SELECT 
        'CityB' as `city`,
        b.*
    FROM `001_leads` b
    WHERE b.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
    UNION
    SELECT 
        'CityC' as `city`,
        c.*
    FROM `001_leads` c
    WHERE c.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
    UNION
    SELECT 
        'CityD' as `city`,
        d.*
    FROM `001_leads` d
    WHERE d.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
    UNION
    SELECT 
        'CityE' as `city`,
        e.*
    FROM `001_leads` e
    WHERE e.`lead_received` BETWEEN '2017-01-01' AND '2017-04-01'
) as `all`
ORDER BY all.`lead_received`,all.`city`;

如果这是一个将在未来不同时间段进行的查询,我建议使用联合创建一个视图,然后对该视图执行 select。