Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ Grupowanie różnicy wartości z dwóch tabel

Napisany przez: brbKify 8.06.2018, 17:34:15

Witam, po lekkich problemach z zapytaniem w końcu doszedłem do właściwej formy:

CODE
1) SELECT (SUM(mięso_na_produkcje.Ilość_kg) - (SELECT SUM(pozycje_do_zamówienia.Ilość_kg) FROM pozycje_do_zamówienia)) AS 'Stan na magazynie (kg)' FROM mięso_na_produkcje

2) SELECI Rodzaj_mięsa, (SUM(Ilość_kg) - (SELECT SUM(Ilość_kg) FROM pozycje_do_zamówienia)) as 'Stan (kg)' from mięso_na_produkcje group by Rodzaj_mięsa

Wynik pierwszego selecta to 1369 i to jest wynik poprawny. Problem w tym, że ta wartość nie zda mi się na wiele więc chciałem ją rozdzielić poprzez Rodzaj_mięsa. Jednak w tym momencie wyniki odejmowania są już niepoprawne (189, 379, 159).
Mógłby ktoś mi wskazać błąd i pomóc go rozwiązać? :/

EDIT:
Powinienem od razu to zamieścić, ale piszę teraz:
Ilość_kg dla mięso_na_produkcje to kolejno 510, 700, 480, natomiast dla pozycje_do_zamówienia to 9, 192, 120. Wynika z tego, że z każdej sumy Ilość_kg od Rodzaj_mięsa odejmuje sumę Ilość_kg dla całego pozycje_do_zamówienia bo 510 - 9 - 192 - 120 = 189. Tyle że kombinując z where Rodzaj_mięsa='' wyskakują mi błedy

Napisany przez: trueblue 8.06.2018, 17:50:34

Są niepoprawne, bo kilogramy z pozycji zamówienia sumujesz z całej tabeli.
Zerknij w Google jak się robi łączenie tabel zamiast robić podselect. A jak bardzo chcesz to chociaż sprzęgnij go poprzez poprzez 'Rodzaj_mięsa' z nadrzędną tabelą.

Napisany przez: brbKify 8.06.2018, 18:18:54

No więc popróbowałem dalej ale nadal nic (chociaż nie jestem pewien czy o to Tobie chodziło)

CODE
select Rodzaj_mięsa, (SUM(mięso_na_produkcje.Ilość_kg)-SUM(pozycje_do_zamówienia.Ilość_kg)) FROM pozycje_do_zamówienia, mięso_na_produkcje group by Rodzaj_mięsa

Select Rodzaj_mięsa, SUM(mięso_na_produkcje.Ilość_kg) from mięso_na_produkcje group by Rodzaj_mięsa
UNION
select Mięso, SUM(pozycje_do_zamówienia.Ilość_kg) from pozycje_do_zamówienia join asortyment on pozycje_do_zamówienia.ID_produktu=asortyment.ID_produktu group by Mięso


W pierwszym wyniki są po 20 - 30 tysięcy sciana.gif
W drugim liczby pokazują się poprawnie ale nie mam pojęcia jak je odjąc sad.gif

Napisany przez: trueblue 9.06.2018, 12:36:31

W jednym zapytaniu ma być JOIN, bez żadnego UNION.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)