老实说,我觉得这很容易。
请参阅以下矩阵:
**Project Resources Hours**
TeamSite Web Developer 30
RFP Technical Writer 45
Db Conversion DBA 20
DB Conversion DB Developer 25
DB Conversion 0 0
DB Conversion 0 0
出于某种原因,当我们向数据库添加数据时,会添加2个额外的数据库转换记录。资源和小时数已添加零。
我们不希望显示任何行,其中Resources和Hours的值为null或0,即使Project具有DB转换值。
以下是我正在玩的代码,但没有告诉我,例如,资源和小时数不为0的前4行。
SELECT project, Hours, Resources
FROM mytable
inner join empTable ON myTable.employeeID = empTable.employeeID
and empTable.employeeID = '@employeeId' AND (Resources <> 0 and Hours <> 0)
ORDER BY empTable.employeeID
我要么是空白,要么是一排。请帮忙。
我希望这不是太麻烦。
非常感谢
答案 0 :(得分:1)
我认为您的问题与您使用参数的方式有关。它不应该包含在'
中。试试这个:
SELECT project, Hours, Resources
FROM mytable
inner join empTable ON myTable.employeeID = empTable.employeeID
WHERE empTable.employeeID = @employeeId AND (Resources <> 0 and Hours <> 0)
ORDER BY empTable.employeeID
答案 1 :(得分:1)
您必须找出插入额外行的原因。一种方法是在行上设置约束,以便插入失败并从那里向后工作。
I am either getting blank or one row. Please help.
至于你的问题,试着把它分成几个小部分:
删除inner join
和非零约束,并确保能够为employeeId
选择行,包括坏行。如果没有,您的employeeId缺失
为'0'
添加约束(Resources
,而不是0
)并确保您只能选择好的行。如果不是你没有写正确的谓词或你没有好的行
添加inner join
并确保相同的结果。如果不是,则主表中没有行。这是一件坏事,因为您有不存在员工的项目时间。
答案 2 :(得分:0)
试试这个:
SELECT project, Hours, Resources
FROM mytable
inner join empTable
ON myTable.employeeID = empTable.employeeID
WHERE empTable.employeeID = @employeeId
AND (Resources <> '0' and Hours > 0)
ORDER BY empTable.employeeID
答案 3 :(得分:0)
我认为您应该使用在ORDER BY子句中使用的表名。这将有很大帮助。
SELECT table_name.project, table_name.Hours, table_name.Resources
FROM mytable
inner join empTable ON myTable.employeeID = empTable.employeeID
where table_name.Resources is not null and table_name.Hours is not null and table_name.Resources <> '0'
and table_name.Hours <> '0' ORDER BY empTable.employeeID
答案 4 :(得分:0)
你得到“一排”吗?也许它是与empTable.employeeID相对应的行。 如果你想要4行,试试这个:
SELECT project, Hours, Resources
FROM mytable
inner join empTable
ON myTable.employeeID = empTable.employeeID
WHERE Resources <> '0' and Hours > 0
ORDER BY empTable.employeeID
答案 5 :(得分:0)
假设有以下表结构: MYTABLE(项目,的EmpID); empTable(EMPID,小时,资源);
使用别名e和m,可以更加优化以获得快速结果。
SELECT m.project, e.Hours, e.Resources
FROM mytable m
inner join
empTable e
ON (
m.employeeID = e.employeeID
AND
e.employeeID = @employeeId
AND
(e.Resources <> '0' AND e.Hours>0)
)
ORDER BY e.employeeID