2つのテーブル(A, B)をフィールドid(主キー)にて紐づけし、照合するプログラムをPython、SQLite3で作成しています。
例えば次のようなテーブルがあるとき、AにおけるidとBにおけるA_idをキーとして、Bにおいて、Aの日付(date)より2ヶ月以内のものを結果Cのように抽出したいと考えております。
テーブルA
id | name | date |
---|---|---|
1 | aaa | 2020/5/1 |
2 | bbb | 2020/10/2 |
3 | ccc | 2020/7/8 |
テーブルB
id | A_id | date |
---|---|---|
1 | 1 | 2020/3/14 |
2 | 2 | 2020/4/21 |
3 | 2 | 2020/8/8 |
3 | 3 | 2020/1/16 |
結果C
A_id | A_date | B_date |
---|---|---|
1 | 2020/5/1 | 2020/3/14 |
2 | 2020/10/2 | 2020/8/8 |
Pythonプログラムは以下の通りです。
しかし、日付の処理がうまくできていないからか、エラーは起こらないものの、結果が何も表示されません。
Python
1import sqlite3 2import datetime 3 4connect = sqlite3.connect("db.sqlite3") 5cursor = connect.cursor() 6 7try: 8 sql = 'SELECT A.id AS A_id, A.date AS A_date, B.date AS B_date \ 9 FROM A INNER JOIN B ON A.id = B.id \ 10 WHERE date(A_date, "localtime") < date(B_date, "localtime", "+2 month") \ 11 ORDER BY A_id;' 12 13 result = [r for r in connect.execute(sql)] 14 15except sqlite3.Error as e: 16 print(e) 17 18print(result) 19 20cursor.close() 21connect.close() 22cursor = None 23connect = None 24
上記プログラムをどのように変更すれば、結果Cのようなデータ抽出ができるのでしょうか?
ご教示の程よろしくお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。