0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 60
1

SQL запрос

10.04.2013, 17:40. Показов 1856. Ответов 5
Метки нет (Все метки)

Здравствуйте, помогите пожалуйста с запросом. Есть таблица с полями Field_1,Field_2,...Field_6. Нужно построить такой запрос, который удовлетворял как МИНИМУМ 4 условиям:
1. Field_1>0
2. Field_2 > Field_3
3. Field_5 < Field_4
4. Field_2 > Field_6
5. Field_2 = Field_5
6. Field_3 > 78
7. Field_6 = 0

Вот запрос, который я написал и проверил в DENWER и он там работал...Сказали, что такой запрос под ORACLE не работает(проверить работу запроса возможности нет)...Подскажите как исправить под ORACLE..
SQL
1
2
3
4
SELECT *
FROM DATA 
WHERE ((Field_1>0)+(Field_2 > Field_3)+(Field_5 < Field_4)+
(Field_2 > Field_6)+ (Field_2 = Field_5)+ (Field_3 > 78)+ (Field_6 = 0))>=4
Заранее спасибо..
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.04.2013, 17:40
Ответы с готовыми решениями:

Не работае запрос в SQL Navigator 6.0 хотя работает в 4 и SQL Plus
Добрый день. Такая вот непонятная проблемка нарисовалась на ровном месте. Установили SQL...

SQL запрос
Дали мне такой запрос: голову сломала, но не смогла написать это запрос, помогите :gcray: И не...

Sql запрос
Нужно выполнить запрос, вывести всех сотрудников у кого зарплата не первая по каждому отделу. Как...

Oracle sql запрос
Всем доброго времени суток. Есть задача составить sql-запрос, который бы решал задачу в...

5
Native x86
Эксперт Hardware
5172 / 3019 / 874
Регистрация: 13.02.2013
Сообщений: 9,635
10.04.2013, 17:50 2
Ну как-то так:
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
SELECT *
FROM DATA 
WHERE (CASE WHEN Field_1 > 0 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_2 > Field_3 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_5 < Field_4 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_2 > Field_6 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_2 = Field_5 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_3 > 78 THEN 1 ELSE 0 END)+
          (CASE WHEN Field_6 = 0 THEN 1 ELSE 0 END)>=4
Хотя правильнее будет написать функцию, которая возвращает сумму условий и вызывать ее так:
Oracle 11 SQL
1
2
3
SELECT *
FROM DATA 
WHERE ConditionSum(Field_1, Field_2, Field_3, Field_4, Field_5, Field_6) >= 4
0
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 60
10.04.2013, 18:24  [ТС] 3
Такая что ли функция:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE FUNCTION ConditionSum(Field1, Field2, Field3, Field4, Field5, Field6 IN NUMBER) RETURN NUMBER IS
   summa NUMBER;
CURSOR c1 IS
      SELECT * FROM DATA WHERE 
(CASE WHEN Field1 > 0 THEN 1 ELSE 0 END)+
          (CASE WHEN Field2 > Field3 THEN 1 ELSE 0 END)+
          (CASE WHEN Field5 < Field4 THEN 1 ELSE 0 END)+
          (CASE WHEN Field2 > Field6 THEN 1 ELSE 0 END)+
          (CASE WHEN Field2 = Field5 THEN 1 ELSE 0 END)+
          (CASE WHEN Field3 > 78 THEN 1 ELSE 0 END)+
          (CASE WHEN Field6 = 0 THEN 1 ELSE 0 END)>=4
BEGIN
   OPEN c1;
   FETCH c1
      INTO summa
CLOSE c1;
   RETURN summa;
END;


Тогда может при вызове этой функции в запросе не надо указывать >=4??
0
Native x86
Эксперт Hardware
5172 / 3019 / 874
Регистрация: 13.02.2013
Сообщений: 9,635
10.04.2013, 18:30 4
Цитата Сообщение от -V1k1ng- Посмотреть сообщение
Такая что ли функция:
А какой в ней смысл? Функция должна суммировать условия:

Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
CREATE FUNCTION ConditionSum(Field1, Field2, Field3, Field4, Field5, Field6 IN NUMBER) RETURN NUMBER
IS
   summa NUMBER;
BEGIN
   summa:= 0;
   IF Field1 > 0 THEN
     summa:= summa+1;
   END IF;
   IF Field2 > Field3 THEN
     summa:= summa+1;
   END IF;
   IF Field5 < Field4 THEN
     summa:= summa+1;
   END IF;
   IF Field_2 > Field_6 THEN
     summa:= summa+1;
   END IF;
   IF Field2 = Field5 THEN
     summa:= summa+1;
   END IF;
   IF Field3 > 78 THEN
     summa:= summa+1;
   END IF;
   IF Field6 = 0 THEN
     summa:= summa+1;
   END IF;
   RETURN summa;
END;
1
0 / 0 / 0
Регистрация: 15.01.2013
Сообщений: 60
10.04.2013, 18:32  [ТС] 5
Все, спасибо!)
0
Футболист
530 / 432 / 142
Регистрация: 31.10.2011
Сообщений: 1,010
11.04.2013, 11:11 6
Если актуально, можно было бы еще таблицу саму с собой связать) и написать селект простенький)
чего вы так гемороитесь с процедурами не пойму
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2013, 11:11
Помогаю со студенческими работами здесь

Pl sql запрос с аналитикой
Добрый день.Есть таблица.Где есть, организация, человек и время в которое они питаются. Время для...

Сложный SQL запрос
Есть три таблицы: movie(id, title, yr, director) actor(id, name) casting(movieid, actorid, ord)...

Запрос в SQL Oracle
Подскажите пожалуйста в чем ошибка, не получается разобраться. Нужно вывести имена всех...

Запрос Oracle SQL
Для всех таблиц схемы вывести: 1) имя таблицы; 2) имя первого (по алфавиту) ограничения Check;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru