0

私は2つのテーブルを持っています。

1 つには 3 つの列のデフォルト データが含まれます (値は 1 または 0)。同じテーブルには ClientID があります。

別のテーブルには、日付、ClientID、および「変更済み」という名前の追加の列を含む編集済みデータが含まれています

Changed = 1 の場合、3 つの列の値が変更されているため、2 番目のテーブルから読み取る必要があります。

これは正常に機能しますが、日付範囲を選択できるレポートをphpで作成し、クエリをClientIDでグループ化し、選択した3列の日付範囲のすべての1をカウントする必要があります。(各列は別)

トリックは次のとおりです。特定の行で Changed = 0 の場合はデフォルト値をチェックし、Changed = 1 の場合は 2 番目のテーブルをチェックする必要があります。そして、前の行でそれを数えます。

私が作成したいものを理解していただければ幸いです

4

1 に答える 1

2

SQLからIF関数を使用できます

例えば

SELECT SUM(IF(Changed=1, t1.col1, t2.col2)) FROM t1, t2 WHERE t1.id=t2.id

これは、SUM でケースの列を使用する方法の例です

于 2012-12-11T08:57:01.263 に答える