Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении запроса / 7 сообщений из 7, страница 1 из 1
24.02.2014, 04:57
    #38570024
sbb_70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
Доброе время суток уважаемые гуру SQL. Помогите новичку составить SQL запрос.
Задача специфическая, поэтому попробую ее перевести немного в другое русло для более правильного понимания.
К примеру имеется автомобильная дорога с заасфальтированными участками и грунтовые участки.
участки с грунотовой дорогой занесенны в таблицу t1 где nach kon начало и конец участка, data некоторые данные

id nach kon data1 data2 1 2 10 1 22 13 43 3 33 66 87 4 44 101 203 3 2 5 500 600 1 1
...

В таблицу t2 занесены участки с ограничениеи скорости, где nach kon начало и конец участка, V - скорость

id nach kon v 1 5 12 402 15 20 20 3 22 39 30 4 50 54 50 5 65 90 40 6 99 105 20 7 109 140 30 8 202 300 509 350 400 40



Необходимо сделать запрос с добавлением к результатам первой таблицы поля с минимальной скоростью
если присутвует ограничение на соответственном участке, то есть результат должен быть таким
id nach kon data1 data2 V 1 2 10 1 2 402 13 43 3 3 203 66 87 4 4 404 101 203 3 2 305 500 600 1 1 null

Субд DB2 с возможностью импорта в Oracle
...
Рейтинг: 0 / 0
24.02.2014, 06:41
    #38570031
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
sbb_70,

Код: sql
1.
2.
3.
select t1.id, t1.nach, t1.kon, t1.data1, t1.data2, t2.v
from t1
left join t2 on ((t1.nach>=t2.nach and t1.nach<=t2.kon) or (t1.kon>=t2.nach and t1.kon<=t2.kon))
...
Рейтинг: 0 / 0
24.02.2014, 08:03
    #38570046
sbb_70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
Злой Бобрsbb_70,

Код: sql
1.
2.
3.
select t1.id, t1.nach, t1.kon, t1.data1, t1.data2, t2.v
from t1
left join t2 on ((t1.nach>=t2.nach and t1.nach<=t2.kon) or (t1.kon>=t2.nach and t1.kon<=t2.kon))


У меня был такой вариант только с between
результат получился такой
id nach kon data1 data2 V 1 2 10 1 2 40 2 13 43 3 3 null 3 66 87 4 4 40 4 101 203 3 2 20 4 101 203 3 2 50
Если отбросить группировку в результирующем запросе нет записи с t1.id=5 и в записи соответствующей t1.id=2 должно быть 2 результирующих строки со значениями полей v 20 и 30
...
Рейтинг: 0 / 0
24.02.2014, 15:19
    #38570555
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
sbb_70,

Выложите скрипт создания исходных таблиц с данными. Руками создавать и заполнять мне лень.
...
Рейтинг: 0 / 0
25.02.2014, 02:56
    #38571070
sbb_70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
Злой Бобрsbb_70,

Выложите скрипт создания исходных таблиц с данными. Руками создавать и заполнять мне лень.

Таблица 1
Код: plsql
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.
CREATE TABLE t1
    (id                             NUMBER,
    nach                           NUMBER,
    kon                            NUMBER,
    data1                          NUMBER,
    data2                          NUMBER);

INSERT INTO t1
("ID","NACH","KON","DATA1","DATA2")
VALUES
(1,2,10,1,2);

INSERT INTO t1
("ID","NACH","KON","DATA1","DATA2")
VALUES
(2,13,43,3,3);

INSERT INTO t1
("ID","NACH","KON","DATA1","DATA2";
VALUES
(3,66,87,4,4);

INSERT INTO t1
("ID","NACH","KON","DATA1","DATA2")
VALUES
(4,101,203,3,2);



Таблица 2


Код: plsql
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.
44.
45.
46.
47.
48.
49.
CREATE TABLE t2
    (id                             NUMBER,
    nach                           NUMBER,
    kon                            NUMBER,
    v                              NUMBER)

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(1,5,12,40);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(2,15,20,20);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(3,22,39,30);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(4,65,90,40);

INSERT INTO t2
VALUES
(6,99,105,20);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(7,109,140,30);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(8,202,300,50);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(5,50,54,40);

INSERT INTO t2
("ID","NACH","KON","V")
VALUES
(9,350,400,30);
...
Рейтинг: 0 / 0
25.02.2014, 05:40
    #38571093
Злой Бобр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
sbb_70,

Код: sql
1.
2.
3.
4.
5.
select id, nach, kon, data1, data2, 
    (SELECT min(v) 
    FROM t2 
    WHERE (t1.nach BETWEEN nach AND kon) OR (t1.kon BETWEEN nach AND kon))
from t1



Ну вобщем я неувидел в тексте минимальное значение. Надеюсь теперь у вас все сойдется.
...
Рейтинг: 0 / 0
25.02.2014, 09:02
    #38571162
sbb_70
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь в составлении запроса
Злой Бобр,

Большое спасибо, то что надо:)
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении запроса / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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