Как объединить 3 или более столов - PullRequest
0 голосов
/ 05 июля 2019

У меня есть 3 таблицы:

--------------------------------------------
DISPO,       ARTICLE,         SALES
--------------------------------------------
GQ_ARTICLE,  GA_ARTICLE,      GL_CODEARTICLE
GQ_PHISIQUE, GA_CODEARTICLE,  GL_QTEFACT
--------------------------------------------

DISPO & ARTICLE связаны между собой:

DISPO.GQ_ARTICLE = ARTICLE.GA_ARTICLE 

ARTICLE & SALES связаны между собой:

ARTICLE.GA_CODEARTICLE = SALES.GL_CODEARTICLE

Я хочудисплей:

ARTICLE.GA_ARTICLE, SUM(GQ_PHISIQUE), SUM(SALES.GL_QTEFACT)

Я пробовал это, запрос выполнен, но без результата (более 10 минут без результата)

SELECT ARTICLE.GA_ARTICLE, SUM(GQ_PHYSIQUE), SUM(SALES.GL_QTEFACT)

FROM DISPO
INNER JOIN ARTICLE ON DISPO.GQ_ARTICLE = ARTICLE.GA_ARTICLE
INNER JOIN SALES ON ARTICLE.GA_CODEARTICLE = SALES.GL_CODEARTICLE

GROUP BY ARTICLE.GA_ARTICLE

1 Ответ

0 голосов
/ 05 июля 2019

Причина, по которой ваш запрос не работает, состоит в том, что прямое объединение трех таблиц возвращает повторяющиеся строки, которые умножают сумму.Соедините 1-ую таблицу с каждым из 2 отдельно и затем объедините результаты с 1-й таблицей:

select 
  a.article
  d.totalphysique
  s.totalqtefact
from article a 
left join (
  select 
    a.ga_article,
    sum(d.gq_physique) totalphysique
  from article a inner join dispo d
  on d.gq_article = a.ga_article
  group by a.ga_article
) d on d.ga_article = a.ga_article
left join (
  select 
    a.ga_article,
    sum(s.gl_qtefact) totalqtefact
  from article a inner join sales s
  on s.gl_codearticle = a.ga_article
  group by a.ga_article 
) s on s.ga_article = a.ga_article
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...