Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » SQL запрос

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Открыть новую тему     Написать ответ в эту тему

NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
perceptron, это не тег открытый, а руки кривые - скопировал не из той закладки notepad++.
У меня оракл, так что буду копать дальше.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 18:24 24-05-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для теста сделал табличку.
После долгого курения интернетов написался такой запрос.
Работает корректно, но возвращает одну лишнюю пустую строку

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 18:53 28-05-2018 | Исправлено: NiXXX, 18:57 28-05-2018
perceptron

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
тогда так можно убрать лишнюю строчку:

Код:
 
select x.errtxt  
from test t,  
 xmltable(  
       '/root/block'  
       passing  
       xmltype('<root>'||replace(replace(t.xmlout,chr(38)||'gt;','>'),chr(38)||'lt;','<')||'</root>'  
              )  
       columns  
         errtxt varchar2(1024) PATH 'errortext[1]/text()'
       ) x
WHERE x.errtxt IS NOT NULL
 

Всего записей: 433 | Зарегистр. 23-12-2005 | Отправлено: 16:07 13-06-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
perceptron, я немного поизвращался и сделал еще такой запрос

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 11:45 14-06-2018 | Исправлено: NiXXX, 11:46 14-06-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Комрады, а никто не сталкивался со следующей ситуацией?
Забил себе с шаблоны (*.tpl) PL/SQL Developer скрипт, который по входному номеру (&Ввести_номер) собирает всю необходимую информацию и выводит ее в удобном виде. В скрипт для теста добавил регулярное выражение ^[а-яА-ЯёЁ0-9_ ]*. При добавлении шаблона через "Insert template - Templates - template" PL/SQL Developer запрашивает входной параметр (норм), а потом почему-то открывается окно, в котором нужно ввести регулярное выражение. Если его не ввести, то оно будет выпилено из скрипта. Можно этого избежать как-то?
 
P.S. Даже если кусок с регуляркой закомментировать, то окно все равно лезет и выражение, кусок в квадратных скобках включительно, выпиливается...

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 15:32 14-06-2018 | Исправлено: NiXXX, 15:51 14-06-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго всем времени суток!
Давно не задавал вопросов
Понимаю, что инициатива наказуема, но решил для себя актуализировать документацию по таблицам схем с которыми работаю, а то схемы есть, таблицы есть, а что там зачем и почему - хз.
Хочу выгрузить данные в составе: таблица, поле, тип, обязательность заполнения, значение по умолчанию, комментарий.
Ясно-понятно, что данные тянуть из user_tab_columns и user_col_comments. С получением данных проблем не возникло, но возникла проблема с полем "Значение по умолчанию" оно же user_tab_columns.data_default - тип поля long, оно так и выводится <Long>, а нужно его значение.  
Начал с простого: substr - мимо. Всякие модификаторы to_char, to_lob и т.д. не помогли.
Как можно вместо <Long> получить его значение? Я точно знаю, что в этом поле максимальное значение не длиннее 24 символов.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 12:28 14-08-2018
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NiXXX
cast(long as varchar(24)) не пробовал

Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 13:39 14-08-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuriyRR, конечно пробовал. Ошибка, как и при использовании других модификаторов: ORA-00932: inconsistent datatypes: expected CHAR got LONG.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 16:05 14-08-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помаялся с выводом, забил, написал (как смог ) генератор html-странички Подробнее....

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 16:10 15-08-2018 | Исправлено: NiXXX, 08:39 07-09-2018
sprivalov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеются 2 таблицы вида
 
A   B  C  D          A  B  C  E
a1 ... ... 5          a1 ... ... 4
a1 ... ... 3          a2 ... ... 8
a2 ... ... 10        a5 ... ... 9  
a3 ... ... 5
 
необходимо написать запрос SQLite, чтобы получить в итоге (отобрать уникальные значения по столбцу А в двух таблицах, просуммировать, по каждому из уникальных от итоговой суммы в таблице 1 отнять сумму из таблицы 2)
 
A   (D-E)
a1    4
a2    2
a3    5
a5    -9
 
P.S. сильно не пинайте, познаний в SQL чуть больше 0

Всего записей: 7 | Зарегистр. 11-03-2018 | Отправлено: 22:57 19-08-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sprivalov, может не совсем понял, таблицы должны выглядеть так?

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 11:42 20-08-2018
sprivalov

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NiXXX, есть 2 таблицы с одинаковым количеством столбцов, для получения результата мне важны из них только два столбца в каждой из таблиц (столбец А в двух таблицах содержит наименование, столбец D таблицы 1 и столбец E таблицы 2 содержат данные о количестве). Столбцы B и C содержат данные, которые не нужны в запросе и не влияют на результат.
 
Нужно отобрать уникальные имена по ст. А и вывести общую сумму по каждому уникальному имени по первой таблице,  это же проделать по таблице 2, затем объединить эти таблицы, получив в итоге в одном столбце перечень уникальных наименований, во втором - разницу между  общим количеством в таб. 1 и таб. 2 по каждому из наименований.
 
У меня самостоятельно в итоге получается либо выбрать только наименования, либо объединить таблицы с дальнейшей группировкой только по одному из наименований.

Всего записей: 7 | Зарегистр. 11-03-2018 | Отправлено: 18:33 20-08-2018
DenSyo

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sprivalov
общий смысл такой, но надо проверять синтаксис....

Код:
SELECT a, SUM(IIF(d IS NULL,0,d)) AS d FROM  
( SELECT a, d FROM tab1  
UNION ALL  
SELECT a, 0-e AS d FROM tab2 ) tt  
GROUP BY a

Всего записей: 218 | Зарегистр. 19-01-2008 | Отправлено: 08:19 22-08-2018 | Исправлено: DenSyo, 08:59 22-08-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И снова доброго времени суток комрадам!
Потребовалось подтянуть на мониторинг (чем осуществялется - хз) пару таблиц. Мониторинг периодически опрашивает таблицы на наличие запросов в определенном статусе, если количество выше порога - поднимает панику. В рабочее время все ок, а вот ночью, когда запросов нет - ловит клина, так как запрос ничего не возвращает. Как сделать так, чтобы в любом случае выводился статус и 0, если запросов в статусе нет?
Табличка для примера.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 11:04 19-09-2018 | Исправлено: NiXXX, 11:43 19-09-2018
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Код:
 
select 'Idle' as idstate, 0 as proc_count
  from dual
 where (
   select count(*)
     from proc p
    where p.idstate in (1, 7)  
      and p.summ > 0
      and p.crtime between sysdate - 1 / 144 and sysdate
      and rownum <= 1
 ) = 0
 union all
select case p.idstate  
         when 1 then  
          'New'  
         else  
          'In Progress'  
       end,  
       count(p.id) proc_count  
  from proc p  
 where p.idstate in (1, 7)  
   and p.summ > 0  
   and p.crtime between sysdate - 1 / 144 and sysdate  
 GROUP BY idstate  
 ORDER BY idstate;
 

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 11:55 19-09-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mic777, все бы неплохо, но мониторинг хочет на вход два параметра, так что если на входе будет один Idle = 0, то он все равно словит клина. Мониторинг хочет New = 0, In Progress = 0, если запрос ничего не возвращает.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 12:27 19-09-2018
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я не знаю что там кто хочет. Был первый вопрос: Как сделать так, чтобы в любом случае выводился статус и 0, если запросов в статусе нет?
Про входные параметры от мониторинга - где они у вас в where ?

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 15:18 19-09-2018
NiXXX



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mic777, мониторинг просто запускает запрос (без каких либо параметров) и ждет, что запрос вернет два значения. Если возвращается одно или вообще пусто, то ловит клина.

Всего записей: 365 | Зарегистр. 06-05-2003 | Отправлено: 15:58 19-09-2018 | Исправлено: NiXXX, 15:58 19-09-2018
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ну так из запроса и возвращаются два значения, в чем проблема?

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 19:40 19-09-2018
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mic777

Цитата:
Ну так из запроса и возвращаются два значения, в чем проблема?

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

Цитата:
If Exists (query)
       (query)
Else
        SELECT 'Value 1', 'Value2'

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 20:44 19-09-2018 | Исправлено: Mavrikii, 20:51 19-09-2018
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Активные темы » SQL запрос


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru