【问题标题】:SQL query for combining data from two tables用于组合来自两个表的数据的 SQL 查询
【发布时间】:2020-12-22 18:26:47
【问题描述】:

我想合并两个不同表中的数据,它们彼此之间没有实际关系,因此我不能使用 JOIN。表结构如下:

冰淇淋

  • 总计
  • 广告商
  • 提供者
  • 供应商

零食

  • 总计
  • 广告商
  • 提供者
  • 供应商

我想运行一个查询,生成一个包含以下内容的表: ice_creams_total、snacks_total、广告商、供应商、供应商

我可以通过运行分别为每个表实现:

SELECT SUM(total) AS ice_creams_total,
       advertiser AS "advertiser::filter",
       provider AS "provider::filter",
       supplier AS "supplier::multi-filter"
FROM ice_creams
WHERE time >= now() - toIntervalHour(96)
GROUP BY integration_id,
         advertiser,
         provider,
         supplier
ORDER BY integration_id ASC,
    ice_creams_total DESC

我可以对两个表都执行此操作,并结合结果吗?

【问题讨论】:

  • 嗯...这里有三种关系:广告商、供应商、供应商。
  • integration_id 是什么?它来自哪里?

标签: jquery mysql sql


【解决方案1】:

您可以使用union all。这是一种方法:

SELECT SUM(ice_cream_total) AS ice_creams_total,
       SUM(snaks_total) as snacks_total,
       advertiser AS "advertiser::filter", provider AS "provider::filter", supplier AS "supplier::multi-filter"
FROM ((SELECT ice_cream_total, 0 as snacks_total, integration_id, advertiser, provider, supplier
       FROM ice_creams ic
      ) UNION ALL
      (SELECT 0, total, integration_id, advertiser, provider, supplier
       FROM snacks s
      )
     ) x
WHERE time >= now() - toIntervalHour(96)
GROUP BY integration_id, advertiser, provider, supplier
ORDER BY integration_id ASC, ice_creams_total DESC

【讨论】:

    【解决方案2】:

    如果 SELECT 列匹配,您可以使用 union all 组合 2 个查询的结果。因此考虑将名称ice_creams_total 更改为total(同样将snacks_total 更改为total)并为2 个查询添加一个额外的手动字段type。 例如。

    SELECT 'ice_creams' type,
    ...
    UNION ALL
    SELECT 'snacks' type,
    ...
    

    查看更多:MYSQL - Concatenate two tables
    另见:https://www.techonthenet.com/mysql/union_all.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-10
      • 2018-06-08
      • 1970-01-01
      • 2011-06-02
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多