2014-10-30 6 views
-2
select count (*) from 
(select a.ACCOUNT_POID_ID0,a.STATUS as moov_profile_status,b.SUB_PLAN_ID,b.PLAN_ID,c.STATUS,c.NAME 
from VMS_MOOV_PROFILE_T a, 
VMS_SUB_PLAN_NO_REGEN_T b, 
VMS_VOUCHER_CONF_T c,  
where b.ACCOUNT_POID_ID0 = a.ACCOUNT_POID_ID0 
and c.VOUCHER_ID = (select f.VOUCHER_ID from VMS_PLAN_VOUCHER_T f where f.PLAN_ID = b.PLAN_ID)); 

Это возвращает ошибку. Как подсчитать количество строк?Подсчитайте количество строк таблицы с псевдонимом

+0

Обеспечить псевдоним для производной таблицы 'FROM (SELECT ...) x' – StuartLC

+0

** Что ошибка ** Что RDBMS вы используете? Я догадался, каков ваш вопрос, но поскольку вы закончили большинство слов на полпути, а не пытались написать все слово, я не уверен на 100%. – Ben

+0

P.S. у вас есть некорректная запятая после 'VMS_VOUCHER_CONF_T c,', что, вероятно, является проблемой. – Ben

ответ

1
Try this 

SELECT count (*) 
FROM (SELECT a.ACCOUNT_POID_ID0, 
       a.STATUS AS moov_profile_status, 
       b.SUB_PLAN_ID, 
       b.PLAN_ID, 
       c.STATUS, 
       c.NAME 
     FROM VMS_MOOV_PROFILE_T a, 
       VMS_SUB_PLAN_NO_REGEN_T b, 
       VMS_VOUCHER_CONF_T c 
     WHERE b.ACCOUNT_POID_ID0 = a.ACCOUNT_POID_ID0 
       AND c.VOUCHER_ID = (SELECT f.VOUCHER_ID 
            FROM VMS_PLAN_VOUCHER_T f 
            WHERE f.PLAN_ID = b.PLAN_ID)) t 
0

Ваши ошибки:

  1. Вы забыли сообщить нам, что сообщение об ошибке вы получили.
  2. Вы забыли рассказать нам, какие dbms вы используете.
  3. Существует запятая для многих (после псевдонима таблицы c).
  4. В зависимости от dbms вам может понадобиться также имя для производной таблицы (т. Е. Добавить некоторое фиктивное имя после закрывающей скобки).

Исправленный запрос:

select count (*) from 
(
    select a.ACCOUNT_POID_ID0,a.STATUS as moov_profile_status,b.SUB_PLAN_ID,b.PLAN_ID,c.STATUS,c.NAME 
    from VMS_MOOV_PROFILE_T a, 
    VMS_SUB_PLAN_NO_REGEN_T b, 
    VMS_VOUCHER_CONF_T c 
    where b.ACCOUNT_POID_ID0 = a.ACCOUNT_POID_ID0 
    and c.VOUCHER_ID = (select f.VOUCHER_ID from VMS_PLAN_VOUCHER_T f where f.PLAN_ID = b.PLAN_ID) 
) dummy; 

Кроме того, как вы присоединиться к таблицам (используя подзапрос на VMS_PLAN_VOUCHER_T) немного странно. И вы не должны использовать старый синтаксис соединения, разделенный запятой, который был заменен в стандартном SQL более двадцати лет назад. Плюс: вам все равно не нужна производная таблица.

Вот ваш запрос упрощена:

select count (*) 
from VMS_MOOV_PROFILE_T a 
join VMS_SUB_PLAN_NO_REGEN_T b on b.ACCOUNT_POID_ID0 = a.ACCOUNT_POID_ID0 
join VMS_PLAN_VOUCHER_T f on f.PLAN_ID = b.PLAN_ID 
join VMS_VOUCHER_CONF_T c on c.VOUCHER_ID = f.VOUCHER_ID; 
Смежные вопросы