Я хотел бы удалить строку с 0 (нули) - PullRequest
0 голосов
/ 28 сентября 2011

Я, честно говоря, подумал, что это будет легко.

Пожалуйста, см. Матрицу ниже:

**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 дополнительные записи преобразования БДдобавлено.Ресурсы и часы имеют добавленные нули.

Мы не хотим показывать строки, в которых значения для ресурсов и часов равны нулю или 0, даже если в Project есть преобразование БД.

Вот код, с которым я играю, но не показывает мне, например, первые 4 строки, где Ресурсы и Часы не равны 0.

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

Я либо получаю пустымили один ряд.Пожалуйста, помогите.

Я надеюсь, что это не слишком много проблем.

Большое спасибо

Ответы [ 6 ]

1 голос
/ 28 сентября 2011

Вы должны выяснить, почему вставляются дополнительные строки. Один из подходов состоит в том, чтобы наложить ограничение на строку, чтобы при вставке произошел сбой, и работа в обратном направлении оттуда.

I am either getting blank or one row. Please help.

Что касается вашей проблемы, попробуйте разбить ее на мелкие части:

  1. Удалите ограничения inner join и ненулевое значение и убедитесь, что вы можете выбирать строки для employeeId, включая плохие строки. Если нет, ваш идентификатор сотрудника отсутствует

  2. Добавьте ограничения ('0' для Resources, а не 0) и убедитесь, что вы можете выбрать только хорошие строки. Если нет, либо вы не написали предикат правильно, либо у вас нет хороших строк

  3. Добавьте inner join и обеспечьте тот же результат. Если нет, в основной таблице нет строк. Это плохо, потому что у вас есть время на проект для несуществующих сотрудников.

1 голос
/ 28 сентября 2011

Я думаю, что ваша проблема в том, как вы используете свой параметр.Он не должен быть завернут в '.Попробуйте это:

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
0 голосов
/ 28 сентября 2011

Предполагая следующую структуру таблиц: 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
0 голосов
/ 28 сентября 2011

Вы получаете "один ряд"?Может быть, это строка, соответствующая 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
0 голосов
/ 28 сентября 2011

Я думаю, что вы должны использовать имя таблицы, как вы использовали в предложении 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
0 голосов
/ 28 сентября 2011

Попробуйте это:

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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...