Topic: Select помощь в написании

Здравствуйте.
Есть 2 таблицы
1- login; 2-main
Задача выбрать количество записей с группировкой из таблицы main И ОТСЕЧЬ НЕ ДЕЙСТВУЮЩИЕ ЗАПИСИ в связанной таблице login условие WHERE (login.aktiv = 2) .
Рабочий скрипт:

procedure FrmOth_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
     FrmOth.Button1.dbSQL :=   ' SELECT login.FIO, '+
                                    ' (SELECT COUNT(*) FROM main t1 WHERE t1.id_login = main.id_login) '+
                                    ' FROM main LEFT OUTER JOIN login ON login.id=main.id_login '+
                                    ' group BY id_login ';
end;

Если добавляю условие WHERE (login.aktiv = 2) запрос зависает.

procedure FrmOth_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
     FrmOth.Button1.dbSQL :=   ' SELECT login.FIO, '+
                                    ' (SELECT COUNT(*) FROM main t1 WHERE t1.id_login = main.id_login) '+
                                    ' FROM main LEFT OUTER JOIN login ON login.id=main.id_login '+
                                    ' WHERE (login.aktiv = 2) '+
                                    ' group BY id_login ';
end;

Re: Select помощь в написании

Ответа не последовало. Хотелось бы уточнить. Выборка правильно написана и не хватает ресурсов у сервера?
Или не правильный подход и так делать нельзя?

procedure FrmOth_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
     FrmOth.Button1.dbSQL :=   ' SELECT login.FIO, '+
                                    ' (SELECT COUNT(*) FROM main t1 WHERE t1.id_login = main.id_login) '+
                                    ' FROM main LEFT OUTER JOIN login ON login.id=main.id_login '+
                                    ' WHERE (login.aktiv = 2) '+
                                    ' group BY id_login ';
end;

Re: Select помощь в написании

Задачу уточните. Зачем вам группировка в запросе? В таблице login у вас пользователи, в таблице main какая-то инфа, связанная с пользователями? При этом в запросе вы хотите видеть список пользователей и число записей в таблице main, которые ссылаются на login? Тогда вот запрос:

SELECT 
  login.FIO,
  (SELECT count(*) FROM main WHERE main.id_login = login.id)
FROM login
WHERE login.active = 2
Визуальное программирование: блог и телеграм-канал.

Re: Select помощь в написании

Добрый день. Спасибо что ответили.
Моя цель выбрать уникальные записи ФИО из таблицы login (login.FIO) с условием login.aktiv = 2 и в вычисляемом столбце t1 посчитать кол-во записей в таблице main. 
Если я правильно понимаю, то выбрать из таблицы login не получится.https://radikalfoto.ru/ib/0yfA5xpTUd.JPG
Поэтому пытаюсь через группировку по id_login.main.

Re: Select помощь в написании

Поле FIO в таблице login должно быть уникальным - ведь это учетные записи пользователей. Или у вас у одного пользователя может быть несколько учетных записей и поле FIO содержит повторяющиеся значения?

Визуальное программирование: блог и телеграм-канал.

Re: Select помощь в написании

Здравствуйте.
Как выяснилось понимал не правильно)
Ваш скрипт работает. Спасибо.
Рабочий вариант с диапазоном дат, который мне был нужен.

procedure FrmOth_Button1_OnClick (Sender: TObject; var Cancel: boolean);
begin
     FrmOth.Button1.dbSQL :=   ' SELECT login.login, login.FIO, '+
     ' (SELECT COUNT(*) FROM main WHERE main.id_login = login.id AND (main.data >= {DateTimePicker5} AND main.data <= {DateTimePicker6})) '+
      ' FROM login '+
      ' WHERE (login.aktiv = (2)) ';
               end;