Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос по строке, Запрос на основ данных строки 
V
    Опции темы
_zena_
Дата 11.12.2007, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Есть таблица с полями 
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.
Все это нужно сделать с помощью запроса.
Такое возможно, или только с помощью курсоров?
PM MAIL   Вверх
LuMee
Дата 11.12.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



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

Что такое "количество 2"?
PM MAIL   Вверх
_zena_
Дата 11.12.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Количество неудовлетворительных (2) оценок больше двух штук
PM MAIL   Вверх
LuMee
Дата 11.12.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 30.3.2007

Репутация: нет
Всего: 1



Вообще, лучше было бы сделать таблицу с полями 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

PM MAIL   Вверх
_zena_
Дата 11.12.2007, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 1.8.2007

Репутация: нет
Всего: нет



Спасибо, идея понятна
PM MAIL   Вверх
Akina
Дата 11.12.2007, 11:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 13
Всего: 454



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

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


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0691 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.