17.06.2009 12:28
pvorobev
 
навоял запрос:
SELECT b.name,sum(b.kol),sum(b.summa)
FROM (SELECT SUPERMAG.SMCASHCHECKITEMS.CHECKNUM as num,
SUPERMAG.SMCARD.NAME as nazv,
SUPERMAG.SMCASHCHECKITEMS.QUANTITY as kol,
SUPERMAG.SMCASHCHECKITEMS.TOTALSUM as summa
FROM SUPERMAG.SMCARD,SUPERMAG.SMCASHCHECKITEMS
WHERE (SUPERMAG.SMCARD.NAME LIKE '%Государь%'
OR SUPERMAG.SMCARD.NAME LIKE '%госуд%')
AND (SUPERMAG.SMCASHCHECKITEMS.ARTICLE=SUPERMAG.SMCARD.ARTICLE)) as b,
SUPERMAG.SMCASHCHECKS
WHERE (b.num = SUPERMAG.SMCASHCHECKS.CHECKNUM)
AND SUPERMAG.SMCASHCHECKS.PRINTTIME>='01.05.2009'
AND SUPERMAG.SMCASHCHECKS.PRINTTIME<='31.05.2009'

при открытии на выполнение пишет Неверная таблица В
подскажите что не так??
17.06.2009 12:33
Mtirt
 
Мне не нравится b.name. У тебя в результатах вложенного запроса нет поля с таким именем...
Скорее всего имелось ввиду поле b.nazv
Это раз.
Скажи, а касс у тебя в одном магазине сколько?
А магазинов?
А Z-отчетов?
Почему соединение таблиц идет только по номеру чека?
Кстати, вполне можно обойтись без вложенного запроса.
17.06.2009 12:45
OlegON
 
Предлагаю пользоваться форматированием. Снизишь риск вывиха мозга себе и читающим. Ошибки лучше сразу приводить со ссылками, где они возникают. Конструкция более чем странная, предлагаю посмотреть в сторону with как минимум.
17.06.2009 12:47
pvorobev
 
Цитата:
Mtirt Мне не нравится b.name. У тебя в результатах вложенного запроса нет поля с таким именем...
Скорее всего имелось ввиду поле b.nazv
Это раз.
Скажи, а касс у тебя в одном магазине сколько?
А магазинов?
А Z-отчетов?
Почему соединение таблиц идет только по номеру чека?
Кстати, вполне можно обойтись без вложенного запроса.
да b.nazv
магазин один, а вот касс 4-е

поправил как понял
SELECT b.nazv,sum(b.kol),sum(b.summa)
FROM (SELECT SUPERMAG.SMCASHCHECKITEMS.CHECKNUM as num,
SUPERMAG.SMCASHCHECKITEMS.DESKNUM as kassa,
SUPERMAG.SMCASHCHECKITEMS.ZNUM as zet,
SUPERMAG.SMCARD.NAME as nazv,
SUPERMAG.SMCASHCHECKITEMS.QUANTITY as kol,
SUPERMAG.SMCASHCHECKITEMS.TOTALSUM as summa
FROM SUPERMAG.SMCARD,SUPERMAG.SMCASHCHECKITEMS
WHERE (SUPERMAG.SMCARD.NAME LIKE '%Государь%'
OR SUPERMAG.SMCARD.NAME LIKE '%госуд%')
AND (SUPERMAG.SMCASHCHECKITEMS.ARTICLE=SUPERMAG.SMCARD.ARTICLE)) as b,
SUPERMAG.SMCASHCHECKS
WHERE (b.num = SUPERMAG.SMCASHCHECKS.CHECKNUM)
AND (b.kassa = SUPERMAG.SMCASHCHECKS.DESKNUM)
AND (b.zet = SUPERMAG.SMCASHCHECKS.ZNUM)
AND SUPERMAG.SMCASHCHECKS.PRINTTIME>='01.05.2009'
AND SUPERMAG.SMCASHCHECKS.PRINTTIME<='31.05.2009'

все равно не выходит
17.06.2009 12:51
kadr
 
Код:
SELECT b.nazv,sum(b.kol),sum(b.summa)
FROM        (SELECT     SUPERMAG.SMCASHCHECKITEMS.CHECKNUM as num,
        SUPERMAG.SMCASHCHECKITEMS.DESKNUM as kassa,
        SUPERMAG.SMCASHCHECKITEMS.ZNUM as zet,
        SUPERMAG.SMCARD.NAME as nazv,
        SUPERMAG.SMCASHCHECKITEMS.QUANTITY as kol,
        SUPERMAG.SMCASHCHECKITEMS.TOTALSUM as summa
FROM     SUPERMAG.SMCARD,SUPERMAG.SMCASHCHECKITEMS
WHERE    (SUPERMAG.SMCARD.NAME LIKE '%Государь%' 
        OR SUPERMAG.SMCARD.NAME LIKE '%госуд%')
        AND (SUPERMAG.SMCASHCHECKITEMS.ARTICLE=SUPERMAG.SMCARD.ARTICLE)) as b,
        SUPERMAG.SMCASHCHECKS
WHERE    (b.num = SUPERMAG.SMCASHCHECKS.CHECKNUM)
        AND (b.kassa = SUPERMAG.SMCASHCHECKS.DESKNUM)
        AND (b.zet = SUPERMAG.SMCASHCHECKS.ZNUM)
        AND    SUPERMAG.SMCASHCHECKS.PRINTTIME>='01.05.2009'
        AND    SUPERMAG.SMCASHCHECKS.PRINTTIME<='31.05.2009'
зачем AS? там просто через пробел указывать надо псевдоним
17.06.2009 12:55
pvorobev
 
даже с просто b
пишет Неверная таблица В
17.06.2009 14:15
kadr
 
Цитата:
pvorobev даже с просто b
пишет Неверная таблица В
и кто же тебе такое пишет?

Код:
SELECT B.NAZV, SUM(B.KOL), SUM(B.SUMMA)
  FROM (SELECT SUPERMAG.SMCASHCHECKITEMS.CHECKNUM AS NUM,
               SUPERMAG.SMCASHCHECKITEMS.DESKNUM  AS KASSA,
               SUPERMAG.SMCASHCHECKITEMS.ZNUM     AS ZET,
               SUPERMAG.SMCARD.NAME               AS NAZV,
               SUPERMAG.SMCASHCHECKITEMS.QUANTITY AS KOL,
               SUPERMAG.SMCASHCHECKITEMS.TOTALSUM AS SUMMA
          FROM SUPERMAG.SMCARD, SUPERMAG.SMCASHCHECKITEMS
         WHERE (SUPERMAG.SMCARD.NAME LIKE '%Государь%' OR
               SUPERMAG.SMCARD.NAME LIKE '%госуд%')
           AND (SUPERMAG.SMCASHCHECKITEMS.ARTICLE = SUPERMAG.SMCARD.ARTICLE)) B,
       SUPERMAG.SMCASHCHECKS
 WHERE (B.NUM = SUPERMAG.SMCASHCHECKS.CHECKNUM)
   AND (B.KASSA = SUPERMAG.SMCASHCHECKS.DESKNUM)
   AND (B.ZET = SUPERMAG.SMCASHCHECKS.ZNUM)
   AND SUPERMAG.SMCASHCHECKS.PRINTTIME >= '01.05.2009'
   AND SUPERMAG.SMCASHCHECKS.PRINTTIME <= '31.05.2009'
GROUP BY B.NAZV
17.06.2009 14:55
cb
 
Что бы все чеки попали за '01.05.2009' и '31.05.2009' число
надо дописать

trunc(SUPERMAG.SMCASHCHECKS.PRINTTIME) >= '01.05.2009'
AND trunc(SUPERMAG.SMCASHCHECKS.PRINTTIME) <= '31.05.2009'
17.06.2009 15:24
pvorobev
 
готовое решение, всем спасибо
Код:
select z1.clientindex, z1.name, sum(z2.prodsum)
from (SELECT DISTINCT 
       dc.article,
       d.clientindex,
       n.name
  FROM supermag.smdocuments d,
       supermag.smspec dc,
       supermag.smclientinfo n
 WHERE d.doctype=dc.doctype
   AND d.id=dc.docid
   AND d.clientindex=n.id
   AND d.opcode=0
   AND d.docstate>=2
   AND TO_DATE(d.createdat) >= ('01.01.2009'))z1,
(SELECT dc.article,
       sum(dc.quantity),
       sum(dc.totalprice) as prodsum
  FROM supermag.smdocuments d,
       supermag.smspec dc
 WHERE d.opcode=1
   AND d.docstate = 3
   AND TO_DATE(d.createdat) BETWEEN '01.04.09' AND '30.04.09'
   AND dc.doctype = d.doctype
   AND dc.docid = d.id
GROUP BY dc.article
ORDER BY dc.article) z2
where z1.article = z2.article
group by z1.clientindex, z1.name
17.06.2009 15:52
Mtirt
 
А какое отношение этот запрос имеет к чекам, которые ты анализировал до этого?
Часовой пояс GMT +3, время: 11:16.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.