Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Запрос по строке


Автор: _zena_ 11.12.2007, 07:19
Есть таблица с полями 
ID Группа Предмет1 Предмет2 Предмет3 ПредметN
0   362            0              2                0                3
1   362            2              5                2                0 
2   353            3              4                3                5
3   326            4              2                2                2 

Нужно выбрать только те записи, в которых количество 2 больше или равно 2.
Все это нужно сделать с помощью запроса.
Такое возможно, или только с помощью курсоров?

Автор: LuMee 11.12.2007, 09:43
Цитата(_zena_ @ 11.12.2007,  07:19)
Нужно выбрать только те записи, в которых количество 2 больше или равно 2.

Что такое "количество 2"?

Автор: _zena_ 11.12.2007, 10:20
Количество неудовлетворительных (2) оценок больше двух штук

Автор: LuMee 11.12.2007, 11:11
Вообще, лучше было бы сделать таблицу с полями ID, Группа, IdПредмета, Оценка - было бы намного проще. В данной постановке тоже можно извратиться, в зависимости от СУБД. Скажем, в SQL Server можно было бы соорудить что-то вроде такого:
Код

SELECT t.*
FROM 
  (SELECT 
    ID,
    [Предмет1] = CASE Предмет1 WHEN 2 THEN 1 ELSE 0 END,
    [Предмет2] = CASE Предмет2 WHEN 2 THEN 1 ELSE 0 END,
    [Предмет3] = CASE Предмет3 WHEN 2 THEN 1 ELSE 0 END
  FROM Таблица) AS tmp
  INNER JOIN Таблица AS t ON t.ID = tmp.ID
WHERE (tmp.Предмет1 + tmp.Предмет2 + tmp.Предмет3) > 2

Автор: _zena_ 11.12.2007, 11:41
Спасибо, идея понятна

Автор: Akina 11.12.2007, 11:52
Цитата(_zena_ @  11.12.2007,  08:19 Найти цитируемый пост)
Есть таблица с полями 
Бардак.
Следует переделать таблицу в нормированный вид:

ID
Группа
Предмет
Оценка

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)