Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
lex871
Member

Откуда:
Сообщений: 54
Здравствуйте. Подскажите пожалуйста как быть с 1 запросом. Есть одна таблица
id name parentID
12 folder1
13 folder2 12
14 folder3 12
---
id - всегда уникальный
name - имя
parentID - ссылка на первый id, т.е. как бы корневой элемент
---
как можно получить таблицу вида
name parentID
folder1
folder2 folder1
folder3 folder1
т.е. parentID заменить именем согласно id.
15 июн 17, 00:01    [20565358]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
lex871
Member

Откуда:
Сообщений: 54
Тему просьба перенести в https://www.sql.ru/forum/microsoft-sql-server, ошибся разделом...
БД SQL Server Compact 4.0

Модератор: Тема перенесена из форума "SQLite".


Сообщение было отредактировано: 15 июн 17, 00:37
15 июн 17, 00:05    [20565363]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
lex871,

SELECT t1.name, t2.name as parentName
FROM table t1
  left join table t2
    on t2.id= t1.parentID
15 июн 17, 03:39    [20565460]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
lex871,

пример, конечно, краткий, и у вас, конечно же, есть еще пара десятков папок вложенных в папки, в которые вложены вложенные папки.

HIERARHICAL QUERIES WITH CTE
15 июн 17, 10:30    [20565867]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Руслан Дамирович
lex871,

пример, конечно, краткий, и у вас, конечно же, есть еще пара десятков папок вложенных в папки, в которые вложены вложенные папки.

HIERARHICAL QUERIES WITH CTE
Но работает ли это в Compact Edition?
Просто интересуюсь.
15 июн 17, 11:07    [20566021]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
iap
Но работает ли это в Compact Edition?
Просто интересуюсь.

Это из разряда, "А будет ли работать этот запрос на Марсе?"
А я почем знаю. Пусть он нам расскажет.

P.S. Вот перевернется на моей улице грузовик с г..ом, буду убирать, чего заранее лопату нести...
15 июн 17, 12:12    [20566328]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
lex871
parentID - ссылка на первый id, т.е. как бы корневой элемент

Вроде бы в условии все ясно сказано. Так что "пары десятков папок вложенных в папки" при такой структуре быть не может и рекурсия тут не нужна.
15 июн 17, 13:42    [20566819]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
lex871
Member

Откуда:
Сообщений: 54
Remind, спасибо большое за ответ.
пробую с дублирующей таблицей
SELECT [ProductGroups2].[NameValue], [ProductGroups].[NameValue] FROM ProductGroups
  left join ProductGroups2
    on ProductGroups2.id= ProductGroups.parentID

всё работает.
Пробую ваш запрос
SELECT t1.NameValue, t2.NameValue as parentName
FROM table t1
  left join table t2
    on t2.id= t1.parentID

ругается на There was an error parsing the query. [ Token line number = 2.Token line offset = 6.Token in error = table ]
если убрать слово "table" то ругается на The specified table does not exist. [t1 ]
может я что не так делаю? Или без дублирующей таблицы не обойтись
17 июн 17, 01:41    [20571610]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
lex871
Remind, спасибо большое за ответ.
пробую с дублирующей таблицей
SELECT [ProductGroups2].[NameValue], [ProductGroups].[NameValue] FROM ProductGroups
  left join ProductGroups2
    on ProductGroups2.id= ProductGroups.parentID


всё работает.
Пробую ваш запрос
SELECT t1.NameValue, t2.NameValue as parentName
FROM table t1
  left join table t2
    on t2.id= t1.parentID
ругается на There was an error parsing the query. [ Token line number = 2.Token line offset = 6.Token in error = table ]
если убрать слово "table" то ругается на The specified table does not exist. [t1 ]
может я что не так делаю? Или без дублирующей таблицы не обойтись
Попробуйте писать не table, а [table]. Это всё-таки ключевое слово, а у вас - имя таблицы.
Нормальный-то сервер в этом случае лоялен - как-то всё понимает и прощает.
17 июн 17, 11:57    [20571828]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
я сильно сомневаюсь, что у ТСа таблица называется "table"...
17 июн 17, 11:59    [20571831]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
Дедушка
я сильно сомневаюсь, что у ТСа таблица называется "table"...
Ошибка-то во время парсинга.
На этом этапе существование объектов не проверяется, как я думаю.
17 июн 17, 12:07    [20571841]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
lex871
Member

Откуда:
Сообщений: 54
iap, проверил, ошибка та же
The specif ied table does not exist, [table]
17 июн 17, 15:50    [20572007]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
lex871
iap, проверил, ошибка та же
The specif ied table does not exist, [table]
Может, таблицы с таким именем действительно нет?
17 июн 17, 17:41    [20572104]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31355
lex871
iap, проверил, ошибка та же
The specif ied table does not exist, [table]
Ну подставьте уже вместо слова table имя своей таблицы.
17 июн 17, 18:14    [20572143]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
lex871,

SELECT pg.[NameValue], pg2.[NameValue] as ParentName
FROM ProductGroups pg
  left join ProductGroups pg2
    on pg2.id = pg.parentID
17 июн 17, 22:29    [20572349]     Ответить | Цитировать Сообщить модератору
 Re: Запрос по 1 таблице с сопоставлением данных в этой же таблице.  [new]
lex871
Member

Откуда:
Сообщений: 54
alexeyvg
lex871
iap, проверил, ошибка та же
The specif ied table does not exist, [table]
Ну подставьте уже вместо слова table имя своей таблицы.

спасибо большое. Всё получилось...

Remind
lex871,

SELECT pg.[NameValue], pg2.[NameValue] as ParentName
FROM ProductGroups pg
  left join ProductGroups pg2
    on pg2.id = pg.parentID

Супер всё, работает. Теперь буду усложнять запрос.

Всем большое спасибо за помощь, очень помогли. Тему можно закрывать
Приятно удивлен отзывчивостью на форуме.
17 июн 17, 23:00    [20572397]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить