Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите, как выкрутиться..  [new]
А
Guest
Значит, есть у меня в програме дерево. Примерно такое:
Ноутбуки
ASUS
Samsung
...
Видеоадаптеры
ASUS
MSI
...
Системные платы
ASUS
MSI
...
Мониторы
Samsung
CRT
LCD
Sony
LCD
...
Ну и так далее (как видите, ASUS - это и ноутбуки, и мониторы, и еще много там чего). Дерево это строиться по ID-полям из базы MS SQL Server. Из програмы можно дотучаться до текста в выделенном узле дерева и в родительском узле. Помогите создать такой запрос, чтобы из него можно было одноначно понять, что вот допустим речь идет о мониторе LCD Samsung (и желательно не использовать оператор LIKE, потомучто компонент доступа к серверу базы данных эту команду никак не обрабатывает: не спрашивайте, почему).
Когда пытаюсь сформулировать такой запрос:
'SELECT TG_GH.[ID] FROM TG_GH WHERE (FNAME = ''' + twCategoryTree.Selected.Text + ''' AND IDP = (SELECT TG_GH.[ID] FROM TG_GH WHERE FNAME = ''' + twCategoryTree.Selected.Parent.Text + '''))'
то SQL Server говорит, что в результате последнего селекта получается больше, чем одна запись.
Скажите, что тут можно сделать-то вообще?
27 июн 05, 13:52    [1652241]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2506
DBTreeView своими руками
27 июн 05, 14:10    [1652339]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
Помогите создать такой запрос, чтобы из него можно было одноначно понять, что вот допустим речь идет о мониторе LCD Samsung


Хм... И как это можно однозначно понять? Что должен вернуть запрос? полный путь к элементу?

автор
Когда пытаюсь сформулировать такой запрос:
'SELECT TG_GH.[ID] FROM TG_GH WHERE (FNAME = ''' + twCategoryTree.Selected.Text + ''' AND IDP = (SELECT TG_GH.[ID] FROM TG_GH WHERE FNAME = ''' + twCategoryTree.Selected.Parent.Text + '''))'


Что то мне непонятно, что Вы пытаетесь этим запросом получить?! получить идентификатор текущего выделенного в дереве элемента по его имени и с идентификатором родителя? Для чего? а судя по ошибке у Вас подзапрос более 1 значения возвращает, вот ругань и идет?
27 июн 05, 14:13    [1652358]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
Пытаюсь запосом получить ID группы, т.е. выделенного узла в дереве. Ситуацию немного попраыило использование IN вместо =.
27 июн 05, 14:17    [1652386]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
Полный путь к элементу не надо возвращать
27 июн 05, 14:18    [1652392]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
А вот ID выделенного элемента + ID родителя выделенного элемента однозначно определяют ID узла в дереве. Поэтому мне нужна именно эта пара
27 июн 05, 14:20    [1652407]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А
А вот ID выделенного элемента + ID родителя выделенного элемента однозначно определяют ID узла в дереве. Поэтому мне нужна именно эта пара


А можно на Вашу структуру таблицы взглянуть? Ибо обычно ID и ID родителя это аттрибуты одного экземляра сущности, т.е. находяться в одной записи.
27 июн 05, 14:28    [1652458]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
Да, так и есть
27 июн 05, 14:31    [1652471]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
ID-счетчик
IDP-ID Родителя, ссылается на ключ другой таблицы
Fname - текст, относящийся к ID
Example
31, 302, Модемы
302, 297, Комплектующие
27 июн 05, 14:35    [1652486]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Если Вы не вытаскиваете оба идентификатора при построении дерева на клиента (почему, спрашивается), то потом точно определить по имени элемента и имени его родителя идентификаторы не представляется возможным, ибо они у Вас могут повторяться. О чем и свидетельствует получающаяся у Вас ошибка.
27 июн 05, 14:37    [1652497]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
Glory
Member

Откуда:
Сообщений: 104760
IDP-ID Родителя, ссылается на ключ другой таблицы
Ого. Уже и вторая таблица нарисовалась. Так глядишь скоро дело дойдет до описания структур всех таблиц
27 июн 05, 14:38    [1652507]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
А
ID-счетчик
IDP-ID Родителя, ссылается на ключ другой таблицы


Какой другой???!!! Вы же в подзапросе ту же самую таблицу опрашиваете TG_GH???!!!
27 июн 05, 14:40    [1652518]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
А
Guest
Нет, нет, никуда не ссылается... Простите :) Просто поле ID Parent
27 июн 05, 14:48    [1652574]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите, как выкрутиться..  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
SELECT
  T1.ID, T1.IDP
FROM
  TG_GH T1
  INNER JOIN TG_GH T2 ON
  T1.IDP = T2.ID
WHERE
  T1.Fname = ''' + twCategoryTree.Selected.Text + ''' AND
  T2.Fname = ''' + twCategoryTree.Selected.Parent.Text + '''
27 июн 05, 15:12    [1652741]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить