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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 43

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

vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fsp050 например для SQL Server 2014 можно так: select convert(varchar(10),getdate(),105)
только не забывай версию БД указывать, соответственно функции немного другие (Oracle/Access/MySQL/Postgresql/Sqllite..).. и вообще это БД-ли? больше похоже на csv файл.. SQL для которого через ADO наверное можно сделать,

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 20:16 02-10-2014 | Исправлено: vikkiv, 20:25 02-10-2014
vpilot



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Fsp050
Смотря какая у тебя база и формат поля для хранения даты.
Для случая с MS SQL и полем даты типа datetime при выборке можно конвертировать в nvarchar в любом доступном формате (в твоем случае США - 110)
Выглядеть будет примерно так:
SELECT CONVERT(NVARCHAR(10), имя_поля, 110) as имя_поля FROM имя_таблицы

Всего записей: 50 | Зарегистр. 11-11-2004 | Отправлено: 14:40 03-10-2014
Alexzzy

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

Цитата:
в твоем случае США - 110

Во как! Телепатия?

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 15:56 03-10-2014
vpilot



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Alexzzy
Виноват перед vikkiv за "плагиат", свой пост писал с предыдущей страницы
 
 
Добавлено:
Вопрос по синхронизации таблиц.
Имеются два связанных сервера MSSQL2008, две базы, в каждой две таблицы (табл1 - заголовок документа, табл2 - содержимое документа). Сервер1 - источник, с него джобом берутся данные из таблиц, немного видоизменяются (убираются/добавляются вычисляемые поля) и выгружаются в таблицы Сервера2. Требуется раз в сутки актуализировать содержимое таблиц Сервера2. Не могу придумать алгоритм. Полностью чистить и прогружать по новой не хочется. Может кто уже сталкивался с подобным?

Всего записей: 50 | Зарегистр. 11-11-2004 | Отправлено: 16:08 03-10-2014 | Исправлено: vpilot, 16:09 03-10-2014
Alexzzy

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

Цитата:
Виноват перед vikkiv за "плагиат", свой пост писал с предыдущей страницы  

Вопрос то про 110.
 

Цитата:
Вопрос по синхронизации таблиц...  

Добавить поле с датой модификации (тип datetime). Заполнять в триггерах значением getdate(). Далее по этой дате можно выборочно синхронизировать данные.

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 20:10 03-10-2014
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
упс, действительно 110 верней будет, со 105 стандартом перепутка вышла, по местам месяца с датой глаз замылился.
 
по синхронизации - согласен с мнением выше, без указания что тащить (по дате обновления/вставки) из разных локаций (если в разных местах стоят) будет тащить по сети и сравнивать всё (трафик/нагрузка), что наверное не сильно отличается от переписывания таблиц (ну разве что за исключением индексации) по производительности. но не забудь что если только тригеры on update/insert оставить - могут потеряться удалённые значения.

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 22:06 03-10-2014 | Исправлено: vikkiv, 22:13 03-10-2014
Alexzzy

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

Цитата:
действительно 110 верней будет

Почему 110? Я вот не увидел какой именно формат нужен.
 
Дополнение по синхронизации.
Да, удаление надо учитывать. Упрощенный рабочий (проверенный и работающий) вариант однонаправленной синхронизации (данные передаются в одну сторону). Например, имеем таблицу SomeTable с первичным ключом SomeID. Для неё создаем таблицу логирования SomeTableLog, с полями  
SomeLogID - первичный Identity ключ (может пригодится),  
SomeID - "виртуальный" (физически не создается) внешний ключ к SomeTable,
Action - действие с записью в SomeTable (0 - insert, 1 - update, 2 - delete),  
ActionDate - дата (и время) действия.  
В триггерах SomeTable заполняется таблица SomeTableLog.  
Пример при вставке данных:
insert SomeTableLog (SomeID, Action, ActionDate)
select SomeID, 0, getdate() from inserted

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 22:55 03-10-2014
vpilot



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vikkiv, Alexzzy интересная идея с триггерами, мог бы сэкономить себе кучу времени.
Жаль в конкретном случае не подходит. База-источник - часть "глючного" ПО, от которого пока не удается избавиться. ПО обновляется и либо слетают триггеры, либо ПО отказывается обновляться (какие-то свои внутренние проверки). Есть поля с датой последней модификации, и, наверное, пока остановлюсь на этом варианте. Но ПО очень "чудное" и кто-то уже наступал на грабли с датами модификаций.
 
А в случае двусторонней синхронизации между двумя базами, которые связаны между собой не на прямую, а через третий сервер, на котором и будут джобы. Нравится идея с триггерами. Допусти веду я на каждой стороне свой лог, при наступлении события (по времени или с подачи пользователем) я запрашиваю лог с двух серверов, выстраиваю цепочку последовательности по времени и... попадаю на ограничение уникальности, к примеру))) такие "камни" обходятся?

Всего записей: 50 | Зарегистр. 11-11-2004 | Отправлено: 23:52 03-10-2014
Alexzzy

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vpilot
Двусторонняя синхронизация таблицы (допускается изменение в обоих БД) это значительно более сложный случай. Для односторонней всё гораздо проще и достаточно рассматривать только последнее изменение с момента последней синхронизации и на его основании делать синхронизацию. Что такое "попадаю на ограничение уникальности" не понятно. В принципе, все "камни" обходятся если правильно подойти в вопросу...

Всего записей: 1474 | Зарегистр. 10-07-2013 | Отправлено: 00:18 04-10-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите пожалуйста, как написать такой запрос.  Задачка по информатике)
Известно что 99% значений лежат в пределах 3х стандартных отклонение
Например, среднее =20, стандартное отклонение =5.  
т.е. 20+- , диапазон значений лежит от  15-25. 3 стандартных отклонения означает, что 20+-15 т.е. 99%  значений лежат в диапазоне от 5 до 35.
 
есть такой запрос
create table dbo.customer    (
customer_id    int        identity primary key clustered
        ,    customer_name    nvarchar(256)    not null
)
 
create table dbo.purchase_order    (
            purchase_order_id    int    identity primary key clustered
        ,    customer_id        int    not null
        ,    amount            money    not null
        ,    order_date        date    not null
)
 
 
нужен запрос, который будет содержать такую информацию:
-для каждого вывода клиента не более 5-ти разных дат,которые содержат аномально высокие или низкие значения.
Для каждого из этого вывода дат также маскимальные и минимальные значения.
 
должно выглядеть примерно так

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 14:49 19-10-2014
vikkiv



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fsp050 - вроде такое может пройти, сходу делал, может математику с границами отклонений проверить надо, возьми образцовую выборку и на ней проверь..
Код:
select customer_name,z.od order_date,mn min_amt,mx max_amt from(select cid,od,e,ROW_NUMBER()over(partition by cid order by e desc)r from(select p.customer_id cid,order_date od,abs(a-amount)e from purchase_order p left join(select customer_id cid,avg(amount)a,3*power(varp(amount),.5)s3 from purchase_order group by customer_id)x on x.cid=p.customer_id where abs(a-amount)>s3)y)z left join (select customer_id cid,order_date od,max(amount)mx,min(amount)mn from purchase_order group by customer_id,order_date)w on w.cid=z.cid and w.od=z.od left join customer on customer.customer_id=z.cid where r<=5 order by 1,2

Всего записей: 747 | Зарегистр. 10-11-2005 | Отправлено: 22:51 20-10-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ещё такой вопросик.
как сделать, чтобы переменные были упорядочены по убыванию
 
например
select
x1
x2
x3
from dbo.yyy
where х1 имеет максимально значение

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 15:40 11-12-2014
landy



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

Цитата:
переменные были упорядочены по убыванию  

  order by x1 desc, x2 desc, x3 desc

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 21:19 11-12-2014
Fsp050

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

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 12:10 12-12-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос. Как составить запрос такого типа
select
x1
x2
x3
x4
x5
from dbo
нужно сложить максимальные значения х1,х2  
потом сложить максимальные значения х3,х4
как это прописать

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 13:28 18-12-2014
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Fsp050
select max(x1) + max (x2), max(x3) + max (x4) from dbo

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 15:59 18-12-2014
Fsp050

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

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 16:09 18-12-2014
Fsp050

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а вот темка реально куда сложнее. можно ли как-то автоматизировать скуль запрос
вот он
SELECT  
х1
х2
х3
х4
..
from dbo a
 where  [accepted_date]>'ххх'
  and  условие такое то
  and х1 in (8,9) -- вот тут самая загвоздка, здесь надо будет перебирать разные комбинации сочетания параметров, их 10
 
1.(8,9)
2.(7,10)
3.(6-10)
4.(4,5,12,13)
5.(2,3,14,15)
6.(24,25)
7.(26,23)
8.(22,27)
9.(20,21,28,29)
10.(18,19,30,31)
 
для каждого из этих условий надо составить идентичный запрос  , такой как выше, только вместо (8,9) будет стоять (7,10) и так до (18,19,30,31)
 
можно ли сделать, что бы таким образом сделалось 10 таблиц  и каждая сохранилось в отдельный csv файл с название  
типа а 8,9.csv
a 7,10.csv
...
 
а то каждый раз приходится  механически писать по новой и вручную сохранять.

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 17:33 19-12-2014
DrakonHaSh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ваш вопрос за рамками простого sql запроса
не понятно для какого sql движка нужно составить запрос.
универсального для "стандартного sql" решения думаю нет т.к., в частности, операции с файлами не входят в стандарт sql. на разных движках это делается по разному. курите операции с файлами. в mysql есть into outfile

Всего записей: 2076 | Зарегистр. 08-01-2008 | Отправлено: 18:18 19-12-2014
Fsp050

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

Всего записей: 361 | Зарегистр. 02-04-2011 | Отправлено: 19:10 22-12-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 43

Компьютерный форум 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