1

こんにちは、SQLに関しては初心者ですので、ご容赦ください。

だから私は2つのテーブルを持っています。1つはTransactionテーブルで、もう1つはCategoryテーブルです。

このTransactionテーブルは、以下を含むトランザクション情報で構成されています。

date, description, amount, category_id

このテーブルはすべてのトランザクションを保持します。

Categoryテーブルは次のもので構成されます。categoryId , name

たとえば、カテゴリは「エンターテイメント」、「ショッピング」、「食べ物」などになります)。

私がやりたいことは、過去 3 か月ごとに発生したすべてのカテゴリ タイプのトランザクションをチェックし、これらのカテゴリを返すことができるようにすることです。

例えば:

今日 (12 月) にこのクエリを実行し、9 月 (2012 年 8 月 3 日)、10 月 (2012 年 9 月 9 日)、11 月 (10 月 15 日) に「ショッピング」トランザクションがあったとします。 /2012) 過去 3 か月間にショッピング トランザクションが発生したため、クエリは「ショッピング」を返す必要があります。

過去 3 か月ごとにカテゴリの過去のトランザクションがあった限り、クエリは複数のカテゴリを返すことができます。私が理にかなっていることを願っています。

役立つアドバイスや例をいただければ幸いです。

ありがとう、アセアン

4

2 に答える 2

1

関数date_subを使用したい。

これをチェックしてください:古い Stackoverflow の質問

そしてdate_sub関数を読んでください:MySQLリファレンス

于 2012-12-13T05:47:33.930 に答える
0

これらのSQLはテストされていません。その場で作成しました。

MSSQL

SELECT Category.name FROM Category INNER JOIN Transaction ON Category.categoryId = Transaction .category_id where DATEDIFF(mm,Transaction.date, Now()) <= 3 GROUP BY Category.name

MYSQL

SELECT DISTINCT Category.name FROM Category INNER JOIN Transaction ON Category.categoryId = Transaction .category_id where PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM Transaction.date)) <= 3
于 2012-12-13T06:29:09.733 に答える