gpt4 book ai didi

php - 如何将表格中的数据与当年和前一年进行比较

转载 作者:行者123 更新时间:2023-11-29 01:56:03 24 4
gpt4 key购买 nike

我在 MySQL 表中有一些数据,我正在尝试通过当前年份值和刚刚过去的一年来比较这些数据。

Books
| id | Name |
| 01 | Maths |
| 02 | English |

BooksTable
| Books | value | Year |
| 01 | 40 | 2012 |
| 02 | 30 | 2012 |
| 02 | 50 | 2013 |
| 01 | 50 | 2013 |
| 01 | 60 | 2014 |

我想要一种优化且更好的方法来比较年份(2013 年和 2014 年)的账面值(value),并能够通过 php 将其输出到 html 表中。这就是我希望它出现在 HTML 表格中的方式

HTML TABLE
| BOOKS | 2013 | 2014 |
| Maths | 50 | 60 |
| English| 50 | - |

这是我做的:

  1. 我先查询了2013年的数据
  2. 然后只查询了2014年的数据
  3. 我在2014年的while语句中做了比较

我犯的错误1. 如果 2014 查询返回空,则所有查询运行 null,因为 2013 查询的输出依赖于 2014 查询

更新请这是我试过的

//query for the year 2013
SELECT
a.id,
a.name,
b.books,
b.value
FROM
BOOKS a
JOIN
BooksTable b
ON
a.id=b.books
WHERE
year=2013


//query for the year 2014
SELECT
a.id,
a.name,
b.books,
b.value
FROM
BOOKS a
JOIN
BooksTable b
ON
a.id=b.books
WHERE
year=2014

拜托,我知道我做错了,有没有优化的更好的方法?如果有人能提供帮助,我将不胜感激。谢谢。

最佳答案

您可以使用以下内容:

SELECT b.Name, IFNULL(bt1.value, '-') as PastYear, IFNULL(bt2.value, '-') as CurrentYear
FROM Books b
LEFT JOIN BooksTable bt1 ON b.id=bt1.Books AND bt1.Year = (SELECT bt1y.Year FROM BooksTable bt1y GROUP BY bt1y.Year ORDER BY bt1y.Year DESC LIMIT 1,1)
LEFT JOIN BooksTable bt2 ON b.id=bt2.Books AND bt2.Year = (SELECT bt2y.Year FROM BooksTable bt2y GROUP BY bt2y.Year ORDER BY bt2y.Year DESC LIMIT 0,1)

这将以您希望在 html 中显示的相同方式返回数据,因此只需循环一次:

output

关于php - 如何将表格中的数据与当年和前一年进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28804858/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com