这里我有一个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
答案 0 :(得分:0)
您应该添加GROUP BY WEEK_NUMBER
答案 1 :(得分: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
答案 2 :(得分:0)
由于您要显示表WEEKLY_TIMECARD
和DAYLY_CALCULATIONS
中的所有字段,因此如果您使用SELECT DISTINCT...
,您可能会遇到与您现在遇到的完全相同的情况(许多行与相同的价值)。
除DISTINCT
和GROUP BY
用法外,您还需要考虑以下因素:
GROUP BY
以及相应的聚合函数。如果您不需要聚合数据,我建议您不要使用GROUP BY
,因为它可以使您的查询执行速度非常慢(可能取决于您使用的是哪个RDBMB)。除此之外,我会使用INNER JOIN
明确定义数据之间的关系(而不是使用WHERE
条件隐式定义它们)......但这是我个人的偏好。