powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужна помощь в составлении запроса
7 сообщений из 7, страница 1 из 1
Нужна помощь в составлении запроса
    #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
Нужна помощь в составлении запроса
    #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
Нужна помощь в составлении запроса
    #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
Нужна помощь в составлении запроса
    #38570555
Злой Бобр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sbb_70,

Выложите скрипт создания исходных таблиц с данными. Руками создавать и заполнять мне лень.
...
Рейтинг: 0 / 0
Нужна помощь в составлении запроса
    #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
Нужна помощь в составлении запроса
    #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
Нужна помощь в составлении запроса
    #38571162
sbb_70
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Злой Бобр,

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


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