0

私はこれを正しく理解できず、まだ結合を扱っているので、間違っている可能性があります。3 つのデータ テーブルと、送信された値 ID でいっぱいの「サマリー」テーブルが 1 つあります。

2 つの異なるテーブルの値 ID 列を合計し、それらを現在の日付とユーザーに関連付けたいと考えています。ありますが、昨日だけですか?クエリを現在の日に変更する必要があります。そこに CURDATE() を入れようとしましたが、明らかに正しくありません。

SELECT U.user_name, SUM(T.cut_timetotal) AS sum_time, SUM(C.cuts_total) AS sum_cuts, DATE(S.submit_date ) AS date
FROM summary S
JOIN cut_info C ON S.cuts_id = C.cuts_id
JOIN users U ON U.user_id = S.user_id
JOIN timeT ON T.time_id = S.time_id
GROUP BY U.user_name
4

1 に答える 1

0

これにより、求める答えが得られるはずです。

SELECT U.user_name, SUM(T.cut_timetotal) AS sum_time, SUM(C.cuts_total) AS sum_cuts, DATE(S.submit_date ) AS date
FROM summary S
JOIN cut_info C ON S.cuts_id = C.cuts_id
JOIN users U ON U.user_id = S.user_id
JOIN timeT ON T.time_id = S.time_id
WHERE S.submit_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY
GROUP BY U.user_name

使用する

S.submit_date BETWEEN CURDATE() AND CURDATE() + INTERVAL 1 DAY

よりも良い

DATE(S.submit_date) = CURDATE()

前者はインデックスが見つかった場合にそれを使用し、後者は使用しないためです。

于 2012-10-17T18:03:16.107 に答える