Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 COUNT с подселектом (?) в запросе  [new]
labirint
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 112
Приветствую всех доброжелателей в отношении чайников !

буду признателен за помощь или совет:
в таблице поддерживается (или как это правильно назвать) древовидная структура простым способом - каждая запись имеет поле идентификации родителя 'tparn'.
Данные выбираются только в пределах "одной ветки", т.е. те, у которых одинаковый родитель. Вот мой запрос:
SELECT tname, tid, chcol FROM tasks WHERE tparn = prant ORDER BY tname INTO cursor mt
, где 'tid' поле-автоинкремент с премиум ключом.
А теперь мне нужно в курсор добавить еще одно поле - 2-е по порядку, в котором подсчитывается количество "сыновних" узлов в каждой строке курсора. Пробовал применить COUNT и в нем (Select...), но не знаю - как правильно записать такой подзапрос и вообще подзапрос ли надо? Сижу пытаюсь путем тыка что-то обнаружить, но ... Искал Гуглом - не нашел понятного объяснения для меня, да и вообще близкого к этой задаче, хотя понимаю, что вещь должна быть довольно ординарная, только не для меня :(
Прошу подсказать - как "сыновей" считать?
6 фев 14, 23:54    [15531652]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с подселектом (?) в запросе  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6901
Значения в tparn - это tid родителя? Скорее всего, подзапрос и надо... Что-то вроде
SELECT tname, tid, chcol, (SELECT COUNT(*) FROM tasks WHERE tparn = t.tid) as cnt ;
FROM tasks t ;
WHERE tparn = prant ;
ORDER BY tname ;
INTO cursor mt
7 фев 14, 01:42    [15531902]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с подселектом (?) в запросе  [new]
labirint
Member [скрыт] [заблокирован]

Откуда:
Сообщений: 112
AndreTM
Значения в tparn - это tid родителя? Скорее всего, подзапрос и надо... Что-то вроде
SELECT tname, tid, chcol, (SELECT COUNT(*) FROM tasks WHERE tparn = t.tid) as cnt ;
FROM tasks t ;
WHERE tparn = prant ;
ORDER BY tname ;
INTO cursor mt


ТО ЧТО НАДО!
Сработало с первой попытки.
Огромное спасибо!!!
7 фев 14, 15:23    [15535201]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить