0

ここに、適切なものをすべて取得する SQL ステートメントがありますが、DISTINCT である必要があります。

したがって、WEEK_NUMBER の場合、返される week_number = 1,1,1,1,1,1 など

私はそれを1つに凝縮したい.これは3つのテーブルクエリであり、SELECT DISTINCT機能または代替手段をどのように含めることができるかわかりません.アイデアはありますか??

SELECT WEEKLY_TIMECARD.*,DAILY_CALCULATIONS.*,EMPLOYEE_PROFILES.EMPLOYEE_NUMBER
FROM WEEKLY_TIMECARD, DAILY_CALCULATIONS, EMPLOYEE_PROFILES 
WHERE EMPLOYEE_PROFILES.EMPLOYEE_NUMBER = WEEKLY_TIMECARD.EMPLOYEE_NUMBER
AND EMPLOYEE_PROFILES.EMPLOYEE_NUMBER = DAILY_CALCULATIONS.EMPLOYEE_NUMBER
AND WEEKLY_TIMECARD.WEEK_NUMBER = DAILY_CALCULATIONS.WEEK_NUMBER
4

3 に答える 3

0

追加する必要がありますGROUP BY WEEK_NUMBER

于 2013-02-07T00:23:52.097 に答える
0

これを試して:

SELECT DISTINCT WEEKLY_TIMECARD.WEEK_NUMBER
FROM 
  WEEKLY_TIMECARD, 
  DAILY_CALCULATIONS, 
  EMPLOYEE_PROFILES 
WHERE EMPLOYEE_PROFILES.EMPLOYEE_NUMBER = WEEKLY_TIMECARD.EMPLOYEE_NUMBER
  AND EMPLOYEE_PROFILES.EMPLOYEE_NUMBER = DAILY_CALCULATIONS.EMPLOYEE_NUMBER
  AND WEEKLY_TIMECARD.WEEK_NUMBER = DAILY_CALCULATIONS.WEEK_NUMBER
于 2013-02-07T00:37:29.710 に答える
0

WEEKLY_TIMECARDテーブルおよびのすべてのフィールドを表示しているためDAYLY_CALCULATIONS、使用SELECT DISTINCT...すると、現在遭遇している状況とまったく同じ状況になる可能性があります (同じ値を持つ多くの行)。

DISTINCTおよび使用法に加えてGROUP BY、次のことを考慮する必要があります。

  1. 本当にすべてのフィールドが必要ですか? もしそうなら、重複した値が必要になるかもしれません。そうでない場合は、必要なフィールドを含めてください。
  2. データを集計する必要がありますか? それとも、値を重複排除するだけでよいですか? データを集計する必要がある場合は、 および適切な集計関数を使用する必要があります。GROUP BYデータを集約する必要がない場合は、 を使用しないことをお勧めします。GROUP BYこれは、クエリの実行が非常に遅くなる可能性があるためです (使用している RDBMBS によって異なります)。
  3. どちらのソリューションを選択する場合でも、テーブルが適切にインデックス化されていることを確認してください。

それに加えて、条件INNER JOINを使用して暗黙的に定義するのではなく、データ間の関係を明示的に定義するために使用しWHEREます...しかし、それは私の個人的な好みです。

于 2013-02-07T00:42:58.947 に答える