mysqlの場合
text
1create table books (
2 id integer not null auto_increment,
3 book_id integer not null,
4 book_name varchar(16) not null,
5 created_at date not null,
6 primary key (id)
7);
8
9insert into books
10(book_id,book_name,created_at)
11values
12 (100,'商品A','2019/10/1')
13,(100,'商品A','2020/10/1')
14,(100,'商品A','2021/10/1')
15,(200,'商品B','2019/10/4')
16,(200,'商品B','2020/10/4')
17,(200,'商品B','2021/10/4')
18,(300,'商品C','2019/10/5')
19,(300,'商品C','2020/10/6')
20,(300,'商品D','2021/10/7')
21;
22
23select
24 books.*,
25 (
26 select
27 old.created_at
28 from
29 books as old
30 where
31 date_add(books.created_at, interval -1 year)=old.created_at
32 ) as old_created_at
33from
34 books
35where
36 books.created_at between '2021/1/1' and '2021/12/31'
37;
これで検索結果は
text
1+----+---------+-----------+------------+----------------+
2| id | book_id | book_name | created_at | old_created_at |
3+----+---------+-----------+------------+----------------+
4| 3 | 100 | 商品A | 2021-10-01 | 2020-10-01 |
5| 6 | 200 | 商品B | 2021-10-04 | 2020-10-04 |
6| 9 | 300 | 商品D | 2021-10-07 | NULL |
7+----+---------+-----------+------------+----------------+
postgresql等他の場合は「去年」というのを計算方法を変更します
なお検索した結果を元にループで再検索するというのは基本的にやらないです(遅い)
いかに一発でsql検索するかってことです
あとは自分でlaravelのqueryに落としてください
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/29 12:00
退会済みユーザー
2021/09/29 12:19
2021/09/29 13:19