MySQL Left Join Duplication - PullRequest
       6

MySQL Left Join Duplication

0 голосов
/ 05 ноября 2011

ТАБЛИЦА A: qa_invoices

    invoice_code   invoice_date
    1              25
    2              25
    3              26
    4              27

ТАБЛИЦА B: qa_invoicesitems

   invoice_code   item_quantity    item_name
   1              2                Mouse
   1              1                CPU
   2              5                Keyboard
   3              1                Router
   4              3                Switch

Мой запрос:

SELECT SUM(qa_invoicesitems.item_quantity) AS item_count, COUNT(*) AS invoice_count    
FROM qa_invoices
LEFT OUTER JOIN qa_invoicesitems USING (invoice_code) 
WHERE qa_invoices.invoice_date = 25

Мой результат:

item_count  invoice_count
8           3           

У меня есть часы, чтобы найти решение этой проблемы, проблема заключается в подсчете счетов-фактур (invoice_count).

Правильный результат будет:

item_count  invoice_count
8           2

если кто-то может помочь мне с моей проблемой.

1 Ответ

1 голос
/ 05 ноября 2011

Попробуйте добавить DISTINCT в ваш COUNT.

SELECT SUM(qa_invoicesitems.item_quantity) AS item_count, COUNT(DISTINCT(qa_invoicesitems.invoice_code)) AS invoice_count    
FROM qa_invoices
LEFT OUTER JOIN qa_invoicesitems USING (invoice_code) 
WHERE qa_invoices.invoice_date = 25
...