|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.03.2019, 10:53 | #1 |
Пользователь
Регистрация: 13.03.2019
Сообщений: 16
|
Помогите начинающему SQLщику)
Всем доброе время суток)
Есть таблица, скрин приложил. Нужно вывести все родительские элементы у 4-д/1. Т.е. должен "гулять" по полям Link и F_docs. Пробую сделать так: select t2.LINK, t2.C_Number, t2.F_Docs from DD_Docs as t1, DD_Docs as t2 where (t2.Link = t1.F_Docs ) Так выводит все, а когда добавляю условие and t2.C_Number = '4-д/1'; выводит одно значение. Просьба не сильно критиковать, только начал изучение. ПРошу помощи) |
13.03.2019, 11:36 | #2 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,515
|
Цитата:
вот он и выводит то что есть. Цитата:
Цитата:
возможно после ответов на данные вопросы все станет ясно и самому
программа — запись алгоритма на языке понятном транслятору
|
|||
13.03.2019, 11:36 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,238
|
в F_Docs находится ссылка на родителя?
и Вам нужно получить сначала link=7 потом у него родитель link=6 потом у него родитель link=1 ? Так это называется иерархическая структура и нужны особого вида запросы (или цикл). в стандартном SQL нет иерархических запросов. Поэтому нужно смотреть конкретную СУБД и реализовывать запрос в рамках её возможностей. p.s. если глубина вложенности не более чем N, то можно стандартными средствами намутить N подзапросов. Но это, разумеется, костыли и не (очень) красиво. |
13.03.2019, 11:39 | #4 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,515
|
Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
13.03.2019, 11:54 | #5 |
Пользователь
Регистрация: 13.03.2019
Сообщений: 16
|
Среда: SQL Server Management Studio v17.9.1
Код самой таблицы: CREATE TABLE dbo.DD_Docs -- Документы ( [LINK] [int] IDENTITY NOT NULL PRIMARY KEY, -- Ид [C_Number] [varchar] (50) NULL, -- Номер [F_Subscr] [int] NOT NULL, -- Л/с [C_Doc_Type] [varchar](50) NOT NULL, -- Тип [D_Date] [date] NOT NULL DEFAULT GETDATE(), -- Дата [F_Docs] [int] NULL, -- Родительский документ CONSTRAINT FK_DD_Docs_DD_Docs FOREIGN KEY (F_Docs) REFERENCES dbo.DD_Docs (LINK) Я просто не до конца понимаю, как это реализовать. Знаю, что должно быть на выходе: |
13.03.2019, 12:29 | #6 |
Пользователь
Регистрация: 13.03.2019
Сообщений: 16
|
|
13.03.2019, 12:29 | #7 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.03.2019, 13:03 | #8 | |
Пользователь
Регистрация: 13.03.2019
Сообщений: 16
|
Цитата:
|
|
13.03.2019, 13:17 | #9 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Попробуй заменить это Recursive на что-то попроще. Судя по цвету воспринимается как зарезервированное слово
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
13.03.2019, 13:25 | #10 |
Пользователь
Регистрация: 13.03.2019
Сообщений: 16
|
Попробовал, ничего не меняется почему-то.
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите начинающему | Родион23 | C# (си шарп) | 6 | 23.05.2016 23:43 |
Помогите начинающему | qeesl | Общие вопросы по Java, Java SE, Kotlin | 5 | 31.10.2015 19:01 |
Помогите начинающему. | Небесный | Общие вопросы Delphi | 12 | 04.02.2007 08:56 |