2

PDO の使用。

SELECT *
FROM time 
WHERE 
    UserId = :uid AND 
(
    week = :CurrentWeek || 
    week = :PreviousWeek1 || 
    week = :PreviousWeek2 || 
    week = :PreviousWeek3 || 
    week = :PreviousWeek4 || 
    week = :PreviousWeek5 
    ) 
GROUP BY week
ORDER BY week DESC

そこで、過去 5 週間と現在の時間をこのような表に出力しようとしています。

                v1      v2      v3      v4      v5      
    Person 1    40      40      40      40      40      
    Person 2    39      40      39      40      40

問題は、たとえばの場合です。v3 は存在しません。v4 を v3 の場所にプッシュします。すべての週の値を取得しようとするものを探しています。存在しない場合は、その列のデフォルト値を返します。

この問題を最善の方法で解決したい。(もちろん、毎週ループして値を1つずつ取得することもできますが、より効率的な方法でなければなりません)

4

1 に答える 1

1

MySQL で偽のデータを生成する意思がない限り(まったく効率的ではありません)、過去 5 週間のデータを取得してから、php でギャップを処理する必要があります (これは単純なはずです)。それがまさに「最善の方法」になります。

于 2013-10-07T21:47:48.073 に答える