Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как ограничить таблицу по датам из другой таблицы / 25 сообщений из 32, страница 1 из 2
11.01.2018, 09:07
    #39582228
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
Здравствуйте всем-всем

Пожалуйста подскажите как мне быть. Есть 2 таблицы
Первая (DrillingDetail) содержит дату бурения(DrillingDate) и имя скважины(holeID), ну и еще всякие столбцы
Вторая (GeoInterval)содержит имя скважины(holeID), от(From), до(To), еще столбцы(Value)

Необходимо получить такую таблицу, чтобы интервалы из второй таблицы отображались только за конкретную дату DrillingDate
Вот например бурилась скважина с 14 по 28 октября, я хочу посмотреть только сколько пробурили 25 октября, а мой скрипт выдает скважину целиком. Помогите, пожалуйста
select GEODETAILS.holeid, GEODETAILS.GEOLFROM, GEODETAILS.GEOLTO ,drillingdate
from
GEODETAILS left join DRILLINGDETAIL
on
GEODETAILS.holeid = DRILLINGDETAIL.holeid

where DRILLINGDATE = '26-oct-2017'
...
Рейтинг: 0 / 0
11.01.2018, 09:14
    #39582234
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,

Если я вас правильно понял, то уберите Left
...
Рейтинг: 0 / 0
11.01.2018, 09:17
    #39582236
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
не сработало, я и inner join пробовала...
...
Рейтинг: 0 / 0
11.01.2018, 09:29
    #39582241
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444не сработало, я и inner join пробовала...
Не сработало "что"?

1. ЭТО "сработало"
[src]
select GEODETAILS.holeid, GEODETAILS.GEOLFROM, GEODETAILS.GEOLTO ,drillingdate
from
GEODETAILS inner join DRILLINGDETAIL
on
GEODETAILS.holeid = DRILLINGDETAIL.holeid

--where DRILLINGDATE = '26-oct-2017'

[src]

2. Даты пишите почеловечески '20171026'

3. И будет вам щастье...
...
Рейтинг: 0 / 0
11.01.2018, 09:34
    #39582244
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
Не сработало.
По прежнему выдает интервалы за все время бурения, не знаю почему

Дело не в записи даты (все остальные фильтра работают с таким форматом)

Нет у меня счастья....а ведь теоретически должно быть
...
Рейтинг: 0 / 0
11.01.2018, 10:36
    #39582292
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,
Код: sql
1.
2.
3.
4.
5.
6.
7.
select GEODETAILS.holeid, GEODETAILS.GEOLFROM, GEODETAILS.GEOLTO ,drillingdate 
from 
GEODETAILS join DRILLINGDETAIL 
on 
GEODETAILS.holeid = DRILLINGDETAIL.holeid  AND DRILLINGDATE BETWEEN GEODETAILS.GEOLFROM AND GEODETAILS.GEOLTO

where DRILLINGDATE = '20171026'
...
Рейтинг: 0 / 0
11.01.2018, 11:40
    #39582362
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
iiyama,

DrillingDate - varchar, поэтому дату нужно писать так как у меня написано.

Суть не в этом. Во второй таблицы интервалы и имя скважины, а в первой имя скважины, дата бурения и количество пробуренного за сутки, то есть интервалов от-до там нет, поэтому не так все просто. Чтобы получилось то, что я хочу нужно складывать пробуренный интервалы. Но я не совсем поняла как. Создала виртуальную таблицу, а дальше как быть? Цикл какой-то нужен?
...
Рейтинг: 0 / 0
11.01.2018, 11:47
    #39582371
iiyama
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,
В таком случае с Вас скрипты создания таблиц, наполнение данными (тестовыми) и образец желаемого результата.
...
Рейтинг: 0 / 0
11.01.2018, 11:54
    #39582380
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
iiyamakatish444,
В таком случае с Вас скрипты создания таблиц, наполнение данными (тестовыми) и образец желаемого результата.

http://www.sql.ru/forum/127456/rekomendacii-po-oformleniu-soobshheniy-v-forume

Пункты 4 и 6.
...
Рейтинг: 0 / 0
11.01.2018, 11:56
    #39582381
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
HoleID DrillingDate TotalDrillDepth
1 25-oct-2017 11
1 26-oct-2017 57
1 27-oct-2017 43
2 25-oct-2017 38


Вот есть такая таблица. Как сделать так, чтобы по запросу на конкретную дату он выдавал сумму TotalDrillDepth
То есть например на 27 октября пробурено всего 43+57+11
...
Рейтинг: 0 / 0
11.01.2018, 11:58
    #39582383
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444HoleID DrillingDate TotalDrillDepth
1 25-oct-2017 11
1 26-oct-2017 57
1 27-oct-2017 43
2 25-oct-2017 38


Вот есть такая таблица. Как сделать так, чтобы по запросу на конкретную дату он выдавал сумму TotalDrillDepth
То есть например на 27 октября пробурено всего 43+57+11

DrillingDate - это просто произвольная строка?
...
Рейтинг: 0 / 0
11.01.2018, 12:00
    #39582386
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,
'26-oct-2017'
вам понравится сортировать даты в варчаре

CAST(DRILLINGDATE as date) по таблице у вас проходит?
...
Рейтинг: 0 / 0
11.01.2018, 12:03
    #39582390
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
Блин, предыдущее сообщение вообще не читабельно получилось

Первая таблица GeoInterval (holeid, geolFrom, geolTo, priority) все varchar
insert into Geointerval (Uz-1, 0, 15, Al)
insert into Geointerval (Uz-1, 15, 18, Al)

Вторая таблица DrillingDetail (holeid, drillingdate, totaldrilldepth) все varchar
insert into Geodetail (Uz-1, 25-oct-2017, 15)
insert into Geodetail (Uz-1, 26-oct-2017, 3)


Мне нужно получить таблицу как Geointerval, но при этом иметь возможность сортировать по дате бурения.
Просмотреть с какого по какой интервал бурили в эту дату
...
Рейтинг: 0 / 0
11.01.2018, 12:03
    #39582391
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444iiyama,

DrillingDate - varchar, поэтому дату нужно писать так как у меня написано.

Суть не в этом.

Суть именно в этом.
Пока вы не научитесь писать даты - датами - вы будет ходить по граблям бесконечно.

Код: sql
1.
AND DRILLINGDATE BETWEEN GEODETAILS.GEOLFROM AND GEODETAILS.GEOLTO


как должон работать на строках?

ЗЫ. Если до вас это не доходит - лучше сразу переквалифицироваться в управдомы.
...
Рейтинг: 0 / 0
11.01.2018, 12:04
    #39582392
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
TaPaK, да, конечно, я использую CAST
проблема просто не в этом и я опустила лишнее обременения для публикации на формуме
...
Рейтинг: 0 / 0
11.01.2018, 12:08
    #39582394
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,

Код: sql
1.
SUM(TotalDrillDepth) OVER (ORDER BY CAST(DrillingDate as date) ROWS UNBOUNDED PRECEDING AND CURRENT ROW)
...
Рейтинг: 0 / 0
11.01.2018, 12:09
    #39582395
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444Блин, предыдущее сообщение вообще не читабельно получилось

Первая таблица GeoInterval (holeid, geolFrom, geolTo, priority) все varchar
insert into Geointerval (Uz-1, 0, 15, Al)
insert into Geointerval (Uz-1, 15, 18, Al)

Вторая таблица DrillingDetail (holeid, drillingdate, totaldrilldepth) все varchar
insert into Geodetail (Uz-1, 25-oct-2017, 15)
insert into Geodetail (Uz-1, 26-oct-2017, 3)


Мне нужно получить таблицу как Geointerval, но при этом иметь возможность сортировать по дате бурения.
Просмотреть с какого по какой интервал бурили в эту дату

Она издевается.

0, 15
и
25-oct-2017

как соотнести?
...
Рейтинг: 0 / 0
11.01.2018, 12:09
    #39582397
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
aleks222, даты я пишу нормально, всегда преобразую. Программа, в которой я работаю, использует именно так, как я прислала, когда мне необходимо, использую CAST
Проблема ведь у меня не в написании дат, а в том как мне написать цикл, чтобы пробуренные метры складывал друг с другом. Кстати, метры у меня тоже текст, это не ошибка, это особенность БД, т.к. все эти поля виртуальные, вообщем это долго объяснять
...
Рейтинг: 0 / 0
11.01.2018, 12:12
    #39582400
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
aleks222,
смотри, когда у меня будет таблица, которая складывает TotalDrillingDate до конкретно указанной даты, тогда это число и совпадет с GeolTo, ведь максимальное количество пробьуренных метров и есть интервал "до"
...
Рейтинг: 0 / 0
11.01.2018, 12:15
    #39582407
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
TaPaK,
спасибо, подскажите current row - это на что он сошлется? какое продолжение должно быть или как не понимаю немного
...
Рейтинг: 0 / 0
11.01.2018, 12:22
    #39582420
Кусочек
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444Мне нужно получить таблицу как Geointerval, но при этом иметь возможность сортировать по дате бурения.
Просмотреть с какого по какой интервал бурили в эту дату

Я, кажется, начала понимать:

geolFrom, geolTo - это с какой глубины до какой дошли в какой шахте неизвестно когда.

drillingdate, totaldrilldepth - это в какую дату в какой шахте сколько прошли за сутки бурения.

Но ведь у Вас нет ключа связи этих таблиц.
...
Рейтинг: 0 / 0
11.01.2018, 12:23
    #39582421
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
TaPaK, преобразила ваш скрипт до:

select SUM(CAST(TotalDrillDepth) OVER (ORDER BY CAST(DrillingDate as date)dat ROWS UNBOUNDED PRECEDING ) from @Drilling_temp

Пишет ошибку Incorrect syntax near 'ROWS'.

Что не так?
...
Рейтинг: 0 / 0
11.01.2018, 12:25
    #39582424
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
declare @DrillingDetail table (holeid varchar(10), drillingdate date, totaldrilldepth int)
insert into @DrillingDetail values('Uz-1', '20171025', 15)
insert into @DrillingDetail values('Uz-1', '20171026', 3)

declare @GeoInterval table (holeid varchar(10), geolFrom int, geolTo int, priority varchar(10));
insert into @Geointerval values('Uz-1', 0, 15, 'Al')
insert into @Geointerval values('Uz-1', 15, 18, 'Al')

-- это для просветления
select *, Total = SUM(TotalDrillDepth) OVER (ORDER BY CAST(DrillingDate as date) ROWS UNBOUNDED PRECEDING ) from @DrillingDetail;

-- ну а это - фсе
with t as (select *, Total = SUM(TotalDrillDepth) OVER (ORDER BY CAST(DrillingDate as date) ROWS UNBOUNDED PRECEDING ) from @DrillingDetail)
  select *
    from @Geointerval as g inner join t on g.holeid = t.holeid and  g.geolFrom < t.total and t.total <= g.geolTo
    order by drillingdate;



ЗЫ. Тредстартера предлагаю зобанить навечно за лень.
...
Рейтинг: 0 / 0
11.01.2018, 12:25
    #39582425
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
katish444,

Это ограничение окна, значит по текущую строку. Можно изменить на, к примеру Rows between 1 preceding and following, т.е. для каждой текущей строки мы будем считать сумму трех строк (текущая, предыдущая и следующая). Но в таком случае могут быть проблемы с производительностью из-за развертывания всех строк кадра.
...
Рейтинг: 0 / 0
11.01.2018, 12:25
    #39582426
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как ограничить таблицу по датам из другой таблицы
Кусочек,

только по HoleID - это имя скважины, оно есть и там и там
Еще если мы приплюсуем TotalDrillDepth на текущую дату - то эта цифра обязательно совпадет с GeolTo, потому что сколько метров набурили - столько и описали
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / как ограничить таблицу по датам из другой таблицы / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]