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

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

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

frb_noname

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

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 09:53 22-07-2010
SIgor33

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
frb_noname
UPDATE  
 contact
SET
   value = substring(value,3,len(value)-3)
where
 value like '8-%'
Если не подерживается функция len поставь максимальное значение длины поля
substring(value,3,255)

Всего записей: 652 | Зарегистр. 03-03-2009 | Отправлено: 13:49 22-07-2010
frb_noname

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

Цитата:
SIgor33

Так просто... спасибо

Всего записей: 47 | Зарегистр. 03-11-2008 | Отправлено: 16:44 22-07-2010
VadKomarov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Приветствую.
Помогите разобраться с sql запросом. (проблемма в том что я вообще не знаю sql)
 
есть удалённая БД на Oracle (к ней я через sql запросы обращаюсь и нахожу нужную информацию по необходимым мне полям)
пример обращения
 
SELECT FAM, IMA, OTC, DOT ADMEXP.EXPRESS WHERE FAM='ИВАНОВ' AND IMA='ИВАН' AND OTC='ИВАНОВИЧ' AND DOT BETWEEN'01.01.2009' AND '31.12.2009'
 
 
 а возникла необходимость произвести выборку из этой БД но выбирать надо по параметрам которые есть у меня локально в MSAccess файле, конечно можно сделать 100000 таких простеньких запросов и просто умереть на рабочем месте... но я всё же надеюсь на положительный результат...
 
пример
в БД еть поля Ф. И. О. Дата операции, Сумма .....
в локальном файле поля F. I. O. Дата рождения, ......
 
так надо выбрать все записи из БД но только те что присутствуют в локальном файле.
 
ожидаемый результат
Иванов Иван Иванович 01.01.2010 15000
Иванов Иван Иванович 01.02.2010 14800
...
Петров Петр Петрович 01.01.2010 25000
Петров Петр Петрович 01.02.2010 17000
...
Сидоров Сидр Сидорович 01.01.2010 11000
Сидоров Сидр Сидорович 01.02.2010 12000
Сидоров Сидр Сидорович 01.03.2010 11000
Сидоров Сидр Сидорович 01.04.2010 11300
....
 
Огромная просьба подскажите как сделать такой запрос.!!!

Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 10:18 27-07-2010 | Исправлено: VadKomarov, 10:30 27-07-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VadKomarov
Вот тут hттp://www.orafaq.com/node/60 ответ как это делать

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 10:41 27-07-2010
VadKomarov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
salexn1
Спасибо почитал...  
 
вот только всё таки ворос остался открытым...
 а можно обратиться к локальному файлу таким образом.. ну или точнее подобным
SELECT * FROM 'D:\Vad\1.mdb'

и прочитав его содержимое .. произвести выборку на удалённой БД

Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 11:04 27-07-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VadKomarov
ну если Вы сделали все то, что написано в статье, то потом можно сделать например так:  
 
select fam, .... from ORACLE_TABLE
WHERE fam in (SELECT FAM_ACCESS FROM MY_ACCESS_TAB@ACCESS_DB)

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 11:14 27-07-2010
VadKomarov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
salexn1
спасибо ... сейчас буду пробовать написать запрос...

Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 11:31 27-07-2010
VadKomarov



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
salexn1  
Здравствуйте. Тот вариант который вы предлагаете достаточно не удобен будет из за того что каждый раз надо будет прописывать доступ к необходимым файлам, хотя огромное спасибо.. я возьму это на заметку в будущем .... было бы гораздо проще просто указывать путь к искомому файлу уже в готовом sql запросе и работать ....
 
а можно ли сделать что то подобное (нашел в интернете но это в SQL Server Management Console)

Код:
IF OBJECT_ID('tempdb.dbo.#tmpTable') IS NOT NULL  
DROP TABLE dbo.#tmpTable;  
CREATE TABLE #tmpTable(  
[column0] [varchar] (255) NULL,  
[column1] [varchar] (255) NULL,  
[column2] [varchar] (255) NULL,  
[column3] [varchar] (255) NULL,  
[column4] [varchar] (255) NULL,  
[column5] [varchar] (255) NULL,  
[column6] [varchar] (255) NULL,  
[column7] [varchar] (255) NULL,  
[column8] [varchar] (255) NULL,  
)  
BULK INSERT #tmpTable FROM 'c:\1.txt'  
WITH (  
CHECK_CONSTRAINTS,  
CODEPAGE='ACP',  
DATAFILETYPE='char',  
FIELDTERMINATOR='\t',  
ROWTERMINATOR='\n',  
KEEPIDENTITY,  
TABLOCK)  
select * from #tmpTable

только чтобы я мог обращаться к удалённой БД на Oracl-е и так вот читал файл с данными...
 
Чисто этот код попробовал при подключении к удалённой БД он мне выдал обибку ORA-00900 invalid SQL statement
А было бы очень удачно именно на подобии этого прочитать локальные данные во временную таблицу.
 
Да ещё забыл добавить что подключение к БД происходит самым простым способом.. (написана в Delphi програмулинка (не мной) с помощью компонента ODAC. В ней кнопка выполнить и 2 окна.... (окно для ввода sql кода и второе для результирующей таблицы) ... результат сохраняется в Excel файл, при нажатии кнопки выполнить открывается окно для ввода логина, пароля и адрес сервера) Такое приложение легко накидать спомошью компонента ODAC ... но к сожалению у меня он не устанавливается .. вот и поэтому приходится извращаться и писать всё через запросы... а так бы я через Delphi подключался к Oracle и к локальному файлу и дальше было бы уже дело техники через цикл выбрать все искомые файлы...
У меня больщущая просьба подсказать как именно сделать sql запрос с непосредственно простым указанием пути к файлу с данными а потом с загруженной временной таблицей... работать и выбирать с удалённой БД
Ещё раз спасибо.

Всего записей: 100 | Зарегистр. 01-05-2005 | Отправлено: 06:06 28-07-2010 | Исправлено: VadKomarov, 06:12 28-07-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
VadKomarov
Ну конечно данный код не будет работать в Оракле, т.к. это для MSSQL код .
Как сделать так же как в MSSQL пока не знаю... Если нарою - дам знать

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 19:21 28-07-2010 | Исправлено: salexn1, 19:22 28-07-2010
chel78



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет, помогите решить..
 есть запрос Oracle

Цитата:
SELECT
LIVE3.SYSDTL.SHIPID AS "SHIPMENT",
SUM (LIVE3.SYSTRN.TRNQTY) AS "CS",
min(LIVE3.SYSTRN.SYSDAT) AS "Start",
max(LIVE3.SYSTRN.SYSDAT) AS "Finish"
FROM
LIVE3.SYSTRN, LIVE3.SYSDTL  
WHERE
LIVE3.SYSTRN.TRNSEQ = LIVE3.SYSDTL.TRNSEQ AND
LIVE3.SYSTRN.TRNTYP = 'CASPIK'
AND LIVE3.SYSDTL.SHIPID IS NOT NULL
and SYSTRN.SYSDAT >= to_date('&SDATE')
and SYSTRN.SYSDAT <= to_date('&EDATE')
GROUP BY
LIVE3.SYSDTL.SHIPID;

который отображает

Цитата:
SHIPMENT               CS     Strat                           Finish                                            
------------ ---------------- ------------------- -------------------                                
0008543144                 83   08/02/2010 10:09:36 08/02/2010 10:17:17                                
0008543145                 83   08/02/2010 10:14:33 08/02/2010 10:24:22                                
0008576832                 52   08/02/2010 12:09:21 08/02/2010 12:09:21                                
0008576833                 16   08/02/2010 08:45:38 08/02/2010 08:50:00                                
0008576838                  5    08/02/2010 08:29:22 08/02/2010 08:29:22                                
0008576839                 30   08/02/2010 10:42:35 08/02/2010 10:42:35                                
0020255551                  3    08/02/2010 06:46:38 08/02/2010 06:46:47

 
Необходимо от  Finish      отнять   Start    и отобразить это в столбце в формате HH:MI:SS                                                      

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 20:23 29-08-2010 | Исправлено: chel78, 20:24 29-08-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chel78
А если разница будет больше 24 часов, что тогда делать?

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 00:15 30-08-2010
chel78



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

Цитата:
А если разница будет больше 24 часов,

 Разница не будет быть больше 24х часов....

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 07:30 30-08-2010 | Исправлено: chel78, 14:15 30-08-2010
chel78



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

Всего записей: 124 | Зарегистр. 19-01-2007 | Отправлено: 22:24 01-09-2010
volser

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chel78
Напишите функцию которая на вход принимает две даты и возвращает строку. Разница двух дат есть дробное число. Целая часть количество дней. Дробная часть часы, минуты, секунды.
Количество секунд = дробная часть * 24 * 60 * 60. Зная количество секунд можно получить результат в нужном формате.

Всего записей: 713 | Зарегистр. 31-03-2006 | Отправлено: 00:19 02-09-2010
salexn1



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chel78
для начала делаешь with на свой запрос,типа
WITH query AS
(
SELECT  
LIVE3.SYSDTL.SHIPID AS "SHIPMENT",  
SUM (LIVE3.SYSTRN.TRNQTY) AS "CS",  
min(LIVE3.SYSTRN.SYSDAT) AS "Start",  
max(LIVE3.SYSTRN.SYSDAT) AS "Finish"  
FROM  
LIVE3.SYSTRN, LIVE3.SYSDTL  
WHERE  
LIVE3.SYSTRN.TRNSEQ = LIVE3.SYSDTL.TRNSEQ AND  
LIVE3.SYSTRN.TRNTYP = 'CASPIK'  
AND LIVE3.SYSDTL.SHIPID IS NOT NULL  
and SYSTRN.SYSDAT >= to_date('&SDATE')  
and SYSTRN.SYSDAT <= to_date('&EDATE')  
GROUP BY  
LIVE3.SYSDTL.SHIPID)
 
Ну а дальше
 
SELECT query.SHIPMENT, query.cs, query.Start, query.Finsh,
to_char(to_date('00:00:00','HH24:MI:SS') + (Finish - Start), 'HH24:MI:SS') diff_time
FROM query

Всего записей: 502 | Зарегистр. 21-02-2008 | Отправлено: 01:15 02-09-2010
dneprcomp



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

Всего записей: 3920 | Зарегистр. 31-03-2002 | Отправлено: 01:31 02-09-2010 | Исправлено: dneprcomp, 01:33 02-09-2010
korol26



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ребят, помогите найти решение проблемы.
 
Имеется две таблицы в MS SQL Server
 
В 1ой описано количество материалов на филиале.
N_Mater
Kolichestvo
 
Во второй описано количество материалов на всех филиалах.
N_filiala
N_Mater
Kolichestvo
 
Как сделать так, чтобы данные о количестве материалов из первой таблицы скидывались во вторую и при этом автоматически выставлялся номер филиала?
 
Заранее, спасибо!

Всего записей: 467 | Зарегистр. 02-11-2004 | Отправлено: 23:04 03-10-2010 | Исправлено: korol26, 23:05 03-10-2010
Tantos



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
korol26
Как в первой таблице понять, какая запись какому филиалу принадлежит? Если никак, то увы - только выставлять ручками в программе.

----------
Чем больше узнаю людей, тем больше люблю компьютеры.

Всего записей: 1038 | Зарегистр. 31-05-2005 | Отправлено: 09:26 04-10-2010
korol26



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

Всего записей: 467 | Зарегистр. 02-11-2004 | Отправлено: 23:01 04-10-2010
Открыть новую тему     Написать ответ в эту тему

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