2013-04-23 2 views
3

Я не могу получить sum() после соединения двух таблиц, один из которых - HEADER AND DETAIL. Он просто дает только 0 результат для инструкции sql ниже. Нужна помощь:Внутреннее соединение MYSQL 2 таблицы и сумма()

Мои таблицы:

INVHDR:

Invno, Invdate, Ac_code 
    100  2013-04-01 2 
    101  2013-04-30 2 

    INVDTLS: 
    Invno, Prod_desc, Amount 
    100  Argon  155 
    100  Argon  250 
    101  Oxygen  322 
    101  Oxygen  065 

Желаемый результат: Сумма АМТС: 405

MYSQL заявление внутренней присоединиться и сумму()

SELECT 
     a.Invno, a.Ac_code, a.Invdate, b.* 
    FROM INVHDR a 
    INNER JOIN (
     SELECT 
       Invno, Prod_desc, SUM(Amount) AS amts 
      FROM INVDTLS 
      WHERE Prod_desc='Argon' 
     ) AS b ON a.Invno = b.Invno 
    WHERE 
     a.Ac_code='2' 
     AND a.Invdate BETWEEN '2013-04-01' 
     AND '2013-04-30' 
    GROUP BY a.Ac_code 
+0

он получает только invno = 100 я думаю –

+0

я получаю 405 по адресу http://www.sqlfiddle.com/#!2/86377/1 – Barmar

ответ

0

Почему вы пишете такой сложныйQuery, попробуйте следующее:

SELECT sum(b.Amount) 
FROM INVHDR a 
INNER JOIN INVDTLS b 
ON a.Invno = b.Invno 
WHERE a.Ac_code='2' 
AND a.Invdate BETWEEN '2013-04-01' AND '2013-04-30' 
AND b.Prod_desc='Argon' 
--Group by b.Prod_desc,a.Invno, a.Ac_code 

Вот SQL Fiddle

+0

Ошибка: # 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии сервера MySQL, для правильного синтаксиса для использования рядом с «FROM INVHDR a INNER JOIN INVDTLS» b «a.Invno = b.Invno WHERE a.Ac_code =« 2 »AND» в строке 1 –

+0

. :) Это даст правильный ответ – Luv

+0

@ RaphaëlAlthaus Пожалуйста, посмотрите на Fiddle. **:) ** – Luv

-1

проверка http://www.sqlfiddle.com/#!2/86377/8 спасибо @Luv

SELECT 
    a.Invno, a.Ac_code, b.Prod_desc, SUM(b.Amount) AS Amount 
FROM INVHDR a 
INNER JOIN INVDTLS b ON a.Invno = b.Invno 
WHERE 
    a.Ac_code = 2 -- a.Ac_code='2' 
    AND a.Invdate BETWEEN '2013-04-01' AND '2013-04-30' 
    AND b.Prod_desc='Argon' 
group by a.Invno, a.Ac_code, b.Prod_desc 
+0

Существует сумма, но это неправильное число, вместо 405 оно дает 700 –

+0

он не даст вам правильный результат, если вы группируете a.Invno. –

+0

настройте группу по мере необходимости i.e настройте запрос по мере необходимости –