powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select как поле
5 сообщений из 5, страница 1 из 1
select как поле
    #32136913
Vagoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имею мастер-таблицу TM и детал-таблицу TD,
причем в детал имеется поле T=TRUE/FALSE.
Могу получить полную выборку с подсчетом вхождений для некоторого поля TM.A типа :
SELECT tm.a, count(*) FROM tm,td WHERE tm.td=td.td GROUP BY tm.a,
Могу также сделать ту же выборку для которой в детайл-таблице будет TRUE:
SELECT tm.a, count(*) FROM tm,td WHERE tm.td=td.td and td.T=true GROUP BY tm.a ,

а хочу выполнить такой запрос:
SELECT tm.a, count(*), (select TMA.a, count(*) from td where TMA.td=td.td and td.T=true group by TMA.a)
FROM tm TMA, td WHERE tm.td=td.td GROUP BY tm.a.

Но ОНО не работает.
То есть работает но подзапрос в поле возвращает только 0, а хочется, чтобы он возвращал количество истинных строк (как во втором запросе).

Подскажите, пожалуйста, почему? И как это исправить?
...
Рейтинг: 0 / 0
select как поле
    #32137051
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT tm.a, count(*), (
select TMA.a, count(*) from td where TMA.td=td.td and
^^^^^^^^^^^^^^
Подзапрос может возвращать только одно значение. Если опечатка и неработает - может бага. Пробуй FB1.4 Beta4 - скоро будет RC1
...
Рейтинг: 0 / 0
select как поле
    #32137212
Vagoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если в поле сформировать (SELECT count(*)) - тоже не работает.
Может быть, я немного напустил туману вопросом. Человеческим языком вопрос может звучать так:
- есть таблица, поле которой ссылается на другую;
- в другой таблице есть поле <TRUE>/<FALSE>;
- необходимо получить соотношение <TRUE>/<ALL> в главной таблице для групп записей.
В классических СУБД это делается суммированием "правильных" -> суммированием "всех" -> делением для каждой группы записей.
А как это сделать в SQL одним оператором, не создавая промежуточных таблиц?
Я пробовал в одном поле сделать подзапрос который был бы ограничен текущим значением из "верхнего" запроса. Однако ограничение не работает, ибо возвращает 0. Может быть оно не работает вообще таким образом?
...
Рейтинг: 0 / 0
select как поле
    #32137409
Vagoo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините за беспокойство, я уже разобрался...
...
Рейтинг: 0 / 0
select как поле
    #32137746
Фотография SmaLL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких случаях неплохо было бы как справился.
Это для потомков.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / select как поле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]