89449


SQL上のDBにuser, audit, changelogという3つのテーブルがあります。  
カラムは以下のとおりです。

[user]  
id, email, date

[audit]  
user_id, difference_id, date

[changelog]  
difference_id, log, year, month, date

※user.idとaudit.user_idは共通したデータです

changelog.difference_idからuser.emailを索引したいのですが、where句は必ず「where
date_format(CURRENT_TIMESTAMP, ‘%Y%m%d’)」を含め、結果を日付で絞って返させたいです。  
クエリを1つにまとめたいのですが、サブクエリをどのように記述すればよいかわかりません。（具体的には、上記のwhereに複数条件が入るかつサブサブクエリを使うという状況に混乱しています）

要するに、下記2つのクエリをまとめたうえで、日付が本日（動的）のものを出したいということです。  
select user_id  
from audit  
where changelog.difference_id = ‘{{9fjei347fyw83926r}}’  
→user_id = 1007 が返る

select email  
from user  
inner join audit on id = user_id  
where user_id = ‘{{1007}}’

何分初心者なもので、意味不明な箇所もあるかと思いますが、できるだけ優しく教えていただけますと幸いです。  
よろしくおねがいします。


CC BY-SA 4.0
2022-06-17T12:51:27.320
89448
2022-06-17T14:53:27.220
53117
question
sql
SQLのクエリについて（サブクエリ、where句）


「与えられた `difference_id` から `changelog` テーブルのレコードを見つけて、それに関連付けられている `user`
テーブルのレコードの `email` を見たい」および「`changelog` テーブルのレコードは `year`、`month`、`date`
でも絞り込みたい」ということであれば以下のようなクエリで見つけられます。サブクエリは不要です。

[code]

    select
        changelog.difference_id
        , user.email
    from
        changelog
        inner join audit on changelog.difference_id = audit.difference_id
        inner join user on audit.user_id = user.id
    where
        changelog.difference_id = ここに調べたいIDを入れる
        and changelog.year = "2022" and changelog.month = "06" and changelog.date = "17"
    
[/code]

> where句は必ず「where date_format(CURRENT_TIMESTAMP,
> ‘%Y%m%d’)」を含め、結果を日付で絞って返させたいです。

質問文のこの部分の解釈があっているか自信がありません。もしこういうことでなければ、サンプルのデータとサンプルの条件を元にどのような結果を望んでいるかの例があると分かりやすいです。

特に、`difference_id` が分かっているのであればそれだけで `changelog`
テーブルのレコードが見つけられるので、更に日付で絞り込む意図がよく分かりませんでした。


CC BY-SA 4.0
2022-06-17T14:53:27.220
89449
2022-06-17T14:53:27.220
19110
89448
answer