8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

跨多列查询

Maris Janelsins 3月前

113 0

我有一个数据库(称为 Matches),其中只有一张表用于记录一项运动(足球)的结果。该表(称为 Matches)有两列用于记录球队,两列用于记录比分。+----...

我有一个数据库(称为 Matches),其中只有一张表用于存储一项运动(足球)的结果。

该表格(称为比赛)有两列表示球队,两列表示得分。

+-----+---------------------+-------------------------+-------------------------+-------------+--------------+
| ID  | TIME                | HOME                    | VISIT                   | HOME_RESULT | VISIT_RESULT |
+-----+---------------------+-------------------------+-------------------------+-------------+--------------+
|   1 | 2024-07-20 21:15:00 | Bayern (Furious)        | PSG (Ozil)              |           4 |            3 |
|   2 | 2024-07-20 21:15:00 | Real Madrid (Dennis)    | Inter (Anthem)          |           2 |            3 |
|   3 | 2024-07-20 21:00:00 | Real Madrid (Dennis)    | PSG (Ozil)              |           3 |            1 |
|   4 | 2024-07-20 21:00:00 | Inter (Anthem)          | Man City (Cruise)       |           3 |            1 |
|   5 | 2024-07-20 20:30:00 | RB Leipzig (Chemist)    | Bayern (Nio)            |           5 |            4 |
|   6 | 2024-07-20 20:30:00 | Bayer 04 (aibothard)    | Dortmund (Panic)        |           2 |            2 |
|   7 | 2024-07-20 20:15:00 | VfB Stuttgart (Cantona) | Dortmund (Panic)        |           1 |            2 |
|   8 | 2024-07-20 20:00:00 | Napoli (Jack)           | Roma (Socrates)         |           3 |            1 |
|   9 | 2024-07-20 20:00:00 | Bayern (Nio)            | Dortmund (Panic)        |           1 |            1 |
|  10 | 2024-07-20 20:00:00 | VfB Stuttgart (Cantona) | RB Leipzig (Chemist)    |           2 |            4 |
|  11 | 2024-07-20 19:45:00 | VfB Stuttgart (Cantona) | Bayer 04 (aibothard)    |           4 |            1 |
|  12 | 2024-07-20 19:45:00 | RB Leipzig (Chemist)    | Dortmund (Panic)        |           3 |            6 |

我需要两个查询,但需要知道是否可以同时从两列(HOME 和 VISIT)获取值。

例如在这种情况下我需要知道:

来自单个球队(主场和访问)的进球数(主场结果和访问结果)是多少?(例如拜仁(蔚来)有 5 个进球,1 个是主场结果,4 个是访问结果)

所有独特的球队有多少场比赛?在这种情况下,有多少比赛排序并显示独特的结果?(例如拜仁(蔚来)只进行了 2 场比赛)

提前致谢

帖子版权声明 1、本帖标题:跨多列查询
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Maris Janelsins在本站《mysql》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 我知道已经有很多关于此的问题,但我已经逐一查看了,但一无所获。我正在运行 php 7.0.6 和 Apache2.4。我从 win 下载了 PHP...

    我知道已经有很多与此相关的问题,但我已经逐一查看了,并没有发现什么问题。

    我运行的是 php 7.0.6 和 Apache2.4。我从 windows.php.net/download 下载了 PHP(我下载了第二个,x86 线程安全的)。下载后,我直接将其解压 C:\ C:\php .

    我正在尝试安装 Magento 电子商务平台,但在继续之前需要安装一些 PHP 扩展(即 curl、xsl、intl、mbstring、openssl 和 gd)

    我读了一下并发现,要启用它们,我必须在文件中删除它们前面的分号 php.ini ,因此我导航到 C:\php 并寻找它,但只能找到 php.ini-development php.ini-production ,看过另一个线程后,我发现这都不是我想要的。

    文件夹 C:\php 中找不到它

    然后我 phpinfo(); 在 php 文件中执行了一个命令并运行它,得到了以下结果:

    Configuration File (php.ini) Path        C:\Windows
    Loaded Configuration File                (none)
    Scan this dir for additional .ini files  (none)
    Additional .ini files parsed             (none)
    

    然后我查看了 C:\Windows 文件夹但无济于事,我不知道如何找到该 php.ini 文件,以便我可以删除分号并加载 php 扩展。

    任何帮助,将不胜感激。

  • 要查找每支球队的进球总数,可以这样做:

    SELECT Team, SUM(Result) AS TotalResult, COUNT(*) AS MatchCount
    FROM (
      SELECT Home AS Team, Home_Result AS Result
      FROM Matches
    
      UNION
    
      SELECT Visit AS Team, Visit_Result AS Result
      FROM Matches
    ) AS s
    GROUP BY Team
    

    我在这里假设表的名称是 Matches .

  • 我收到一个错误:“错误 1248 (42000):每个派生表都必须有自己的别名”

  • 尝试在 C:\Program Files (x86) 或 C:\Program

  • 我收到一个错误:\'在第 9 行'AS s2GROUP BY TEAM'附近\'

  • 我说的“为了让我的工作”是指为了让 PHP 在扩展被取消注释后真正使用这些扩展,我必须将 ini 设置从

  • 现在我找到了一个无需安装 MySQL 即可测试查询的地方,并且已经修复了查询。

  • PHP 安装位置 C:\php 有一个 php.ini-development php.ini-production 。您可以将其中一个复制或重命名为 php.ini 。这些是模板,具有所需的所有默认设置。主要区别在于开发模板会打开错误报告,而生产模板则不会:

    C:\php 加载 C:\windows 。我使用 PHP 目录,因为我相信 PHP 会始终在运行 PHP 的目录中查找:

    copy c:\php\php.ini-development c:\php\php.ini
    

    或者:

    copy c:\php\php.ini-development c:\windows\php.ini
    

    我的系统:

    Configuration File (php.ini) Path       C:\Windows
    Loaded Configuration File               C:\app\php\php.ini
    
  • d r 3月前 0 只看Ta
    引用 10

    我将包括复制 c:\php\php.ini-development c:\windows\php.ini。

  • 引用 11

    我试图弄清楚如何按 90 天内的交易日期获得价值总和,并重复一年的交易日期。这就是我所拥有的 transaction_datevalu...

    我试图弄清楚如何根据 90 天内的交易日期获得价值总和,并重复一年的交易日期。

    这就是我所拥有的

    交易日期 价值
    2024 年 1 月 1 日 20
    2024 年 2 月 1 日 50
    2024 年 3 月 1 日 三十

    预期结果如下:

    交易日期 date_diff 价值
    2024 年 1 月 1 日 2023 年 3 月 10 日 (20+ 2023 年 10 月 3 日至 2023 年 1 月 1 日之间的所有交易日期值
    2024 年 2 月 1 日 2023 年 4 月 10 日 20 + 50 + 预期价值
    2024 年 3 月 1 日 2023 年 5 月 10 日 20 + 50 + 30 + 预期价值

    对于 date_diff,我通过以下方式获取日期:

    (交易日期)- 90 天,作为 date_diff90

  • @RobWilliams:您应该知道您的系统是否用于开发或生产,但我很容易猜出它是用于开发。

  • 尝试使用 自连接 间隔函数 我还没有测试,但它应该是这样的

    SELECT
        t1.transaction_date,
        DATE_SUB(t1.transaction_date, INTERVAL 90 DAY) AS date_diff,
        SUM(t2.value) AS value
    From
        transactions t1
    join
        transactions t2
    ON
        t2.transaction_date BETWEEN DATE_SUB(t1.transaction_date, INTERVAL 90 DAY) AND t1.transaction_date
    GROUP BY
        t1.transaction_date
    ORDER BY
        t1.transaction_date;
    

    使用间隔 90 天计算前 90 天

  • 一个简单的相关子查询就可以了。

    create table test(transaction_date date,value int);
    insert test values
    ('2024-01-01',  20),
    ('2024-01-02',  80),
    ('2024-01-03',  30),
    ('2024-02-01',  10),
    ('2024-02-02',  50),
    ('2024-03-03',  40),
    ('2024-03-05',  20),
    ('2024-04-02',  150),
    ('2024-04-03',  30),
    ('2024-05-04',  20),
    ('2024-05-05',  250),
    ('2024-06-03',  30),
    ('2024-06-04',  20),
    ('2024-07-02',  250),
    ('2024-07-10',  130)
    ;
    select * from test;
    --result set:
    +------------------+-------+
    | transaction_date | value |
    +------------------+-------+
    | 2024-01-01       |    20 |
    | 2024-01-02       |    80 |
    | 2024-01-03       |    30 |
    | 2024-02-01       |    10 |
    | 2024-02-02       |    50 |
    | 2024-03-03       |    40 |
    | 2024-03-05       |    20 |
    | 2024-04-02       |   150 |
    | 2024-04-03       |    30 |
    | 2024-05-04       |    20 |
    | 2024-05-05       |   250 |
    | 2024-06-03       |    30 |
    | 2024-06-04       |    20 |
    | 2024-07-02       |   250 |
    | 2024-07-10       |   130 |
    +------------------+-------+
    

    查询如下:

    select transaction_date,
    date_sub(transaction_date,interval +90 day) as date_diff,
    (select sum(value) from test where transaction_date between date_sub(t.transaction_date,interval +90 day) and t.transaction_date ) as value
    from test t;
    -- result set:
    +------------------+------------+-------+
    | transaction_date | date_diff  | value |
    +------------------+------------+-------+
    | 2024-01-01       | 2023-10-03 |    20 |
    | 2024-01-02       | 2023-10-04 |   100 |
    | 2024-01-03       | 2023-10-05 |   130 |
    | 2024-02-01       | 2023-11-03 |   140 |
    | 2024-02-02       | 2023-11-04 |   190 |
    | 2024-03-03       | 2023-12-04 |   230 |
    | 2024-03-05       | 2023-12-06 |   250 |
    | 2024-04-02       | 2024-01-03 |   300 |
    | 2024-04-03       | 2024-01-04 |   300 |
    | 2024-05-04       | 2024-02-04 |   260 |
    | 2024-05-05       | 2024-02-05 |   510 |
    | 2024-06-03       | 2024-03-05 |   500 |
    | 2024-06-04       | 2024-03-06 |   500 |
    | 2024-07-02       | 2024-04-03 |   600 |
    | 2024-07-10       | 2024-04-11 |   700 |
    +------------------+------------+-------+
    
  • @JuliePelletier 好的,那么我将复制开发版本并将其重命名为 php.ini?它应该位于 c:\windows 还是 c:\php?

  • 如果你运行的是带有 Bash shell 的 Windows 10,则可以运行

    php -i | grep '\.ini'
    

    这将显示所有已加载的配置文件。经常在 Windows 上工作的人可能会识别出以原生方式执行等效操作的方法。

  • 确保在复制或重命名 php.ini 文件时将文件扩展名从 .ini-developement(或 .ini-production,取决于您使用哪一个)更改为 .ini。如果您看不到文件的扩展名,您可以通过单击 >view 并选中 最右侧的 文件扩展名

    ,如果文件扩展名已更改为 .ini,则 应该显示 配置文件

返回
作者最近主题: