Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335

Пронумеровать "отсутствующие" строки

07.05.2020, 16:15. Показов 1269. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, товарищи!
Есть несколько таблиц:
T-SQL
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
50
CREATE TABLE [dbo].[Table_1](
    [id] [int] NULL,
    [name] [nvarchar](50) NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Table_2](
    [id] [int] NULL,
    [party] [nvarchar](50) NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Table_3](
    [in] [nvarchar](50) NULL,
    [out] [nvarchar](50) NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Table_4](
    [id_party] [nvarchar](50) NULL,
    [prop1] [nvarchar](50) NULL,
    [prop2] [nvarchar](50) NULL
) ON [PRIMARY]
 
INSERT [dbo].[Table_1] ([id], [name]) VALUES (1, N'A1')
INSERT [dbo].[Table_1] ([id], [name]) VALUES (2, N'B2')
INSERT [dbo].[Table_1] ([id], [name]) VALUES (3, N'C3')
INSERT [dbo].[Table_2] ([id], [party]) VALUES (1, N'AAA1')
INSERT [dbo].[Table_2] ([id], [party]) VALUES (1, N'BBB2')
INSERT [dbo].[Table_2] ([id], [party]) VALUES (2, N'AAA2')
INSERT [dbo].[Table_2] ([id], [party]) VALUES (2, N'BBB3')
INSERT [dbo].[Table_2] ([id], [party]) VALUES (1, N'CCC3')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'AAA1', N'qqq1')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'AAA1', N'www1')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'BBB2', N'eee2')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'CCC3', N'zzz3')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'AAA2', N'aaa3')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'AAA2', N'sss3')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'BBB3', N'ddd3')
INSERT [dbo].[Table_3] ([in], [out]) VALUES (N'BBB3', N'fff3')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'AAA1', NULL, N'2')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'AAA2', NULL, N'4')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'BBB2', NULL, N'6')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'BBB3', NULL, N'8')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'qqq1', N'1', N'11')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'www1', N'2', N'13')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'eee2', N'1', N'15')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'CCC3', NULL, N'33')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'aaa3', N'1', N'19')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'sss3', N'2', N'22')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'ddd3', N'1', N'24')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'fff3', N'2', N'26')
INSERT [dbo].[Table_4] ([id_party], [prop1], [prop2]) VALUES (N'zzz3', N'2', N'34')
Есть запрос:
T-SQL
1
2
3
4
5
6
7
8
9
  select t3.[in], t3.[out], t4.prop1, t4.prop2
  from Table_1 t1
  join Table_2 t2
  on t2.id = t1.id
  join Table_3 t3
  on t3.[in] = t2.party
  join Table_4 t4
  on t4.id_party = t3.[out]
  where t1.id = 1
Который выдает следующий результат:
https://www.cyberforum.ru/atta... 1588857322
но мне нужно, чтобы для каждой записи из Table_3.in всегда приджойнивалось две записи даже если связь имеется только с одной записью, т.е. запрос выдавал следующее:
https://www.cyberforum.ru/atta... 1588857322
при этом надо учитывать номер, который находится в поле Table_4.prop1
Изображения
  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.05.2020, 16:15
Ответы с готовыми решениями:

Пронумеровать строки
Здравствуйте, товарищи! Есть две таблицы CREATE TABLE .( (20) NULL, (20) NULL, (20) NULL, (50) NULL ) ON CREATE...

Пронумеровать строки
Народ нужна помощь, нужно пронумеровать строки. Короче есть таблица надо пронумеровать строки от "Order_delivery" до ...

Пронумеровать строки
Здравствуйте. Есть таблица в которой есть персональные номера сотрудников. В этой таблице эти значения могут повторяться. Как можно...

3
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
07.05.2020, 17:47
Table_4.prop1 всегда 1 или 2?
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
07.05.2020, 18:02  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
Table_4.prop1 всегда 1 или 2?
В Table_4 хранятся условные партии. Партии в верхнем регистре(AAA1, AAA2, BBB3 и т.д.) включают партии в нижнем регистре(qqq1, www1 и т.д.). Партии в верхнем регистре могут включать от одной до двух партий в нижнем регистре(эта связь реализуется в Table_3). Table_4.prop1 - может содержать значение как 1 так и 2 в зависимости от того, какое условное место занимает партия в нижнем регистре в партии в верхнем регистре. Для каждой партии в верхнем регистре надо всегда выводить два места, даже если одно из них пустое.
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
07.05.2020, 20:10
Лучший ответ Сообщение было отмечено carga2 как решение

Решение

carga2, примерно так
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
select
 b.[in], b.[out], b.prop1, b.prop2
from
 Table_1 t1 join
 Table_2 t2 on t2.id = t1.id cross apply
 (
  select
   max(t3.[in]) over (), t3.[out], a.prop1, t4.prop2
  from
   (select [in], [out] from Table_3 where [in] = t2.party) t3 join
   Table_4 t4 on t4.id_party = t3.[out] full join
   (values (1), (2)) a(prop1) on a.prop1 = t4.prop1
 ) b([in], [out], prop1, prop2)
where
 t1.id = 1;
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2020, 20:10
Помогаю со студенческими работами здесь

Пронумеровать строки
Здравствуйте, у меня есть таблица отсортированная и пронумерованная, но когда я удаляю одну строку появляется дыра в нумерации. Подскажите,...

Пронумеровать строки в таблице
Всем привет! помогите пожалуйста.firebird 2.1 есть таблица document c колонками id number opendate в колонке number...

Как пронумеровать строки в отчете?
Сабж. Как пронумеровать строки данных в отчете? Ну типа по порядку: 1, 2, 3 и т.д. ...

Help! Можно ли в Access пронумеровать строки запроса?
Обычный такой запрос, заранее неизвестно, сколько записей он выберет - 10 или 1000, но пронумеровать строки по порядку надо (так как далее...

Как пронумеровать строки в запросе (Access 97)?
Как добавить поле в запрос, чтобы в нем (в поле) были номера строк запроса по порядку. Возможно ли вообще?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru