mam zapytanie z funkcją UNION, które zlicza mi pola do uzupełnienia w różnych tabelach, sumuje je a potem grupuje po użytkowniku który dodał dany rekord wymagający uzupełnienia.
SELECT ktodod, , SUM(ile) FROM( SELECT CASE WHEN `pozycje_zakupowe`.`waga_pozycji` IS NULL THEN `pozycje_zakupowe`.`kto_dodal` ELSE `zakupy`.`kto_dodal` END AS `ktodod`, COUNT( CASE WHEN `pozycje_zakupowe`.`waga_pozycji` IS NULL THEN `pozycje_zakupowe`.`kto_dodal` ELSE `pozycje_zakupowe`.`kto_dodal` END ) AS ile FROM { oj `firma`.`pozycje_zakupowe` AS `pozycje_zakupowe` LEFT OUTER JOIN `firma`.`gatunki_materialow` AS `gatunki_materialow` ON `pozycje_zakupowe`.`ID_materialu` = `gatunki_materialow`.`ID_gatunku_materialu` }, `firma`.`listy_zakupowe` AS `listy_zakupowe`, `firma`.`zakupy` AS `zakupy`, `firma`.`rodzaje_pozycji_zakupowych` AS `rodzaje_pozycji_zakupowych`, `firma`.`zamawiajacy` AS `zamawiajacy` WHERE `listy_zakupowe`.`ID_pozyji_zakupowej` = `pozycje_zakupowe`.`ID_poz_zakupowej` AND `listy_zakupowe`.`ID_zakupow` = `zakupy`.`ID_zakupu` AND `pozycje_zakupowe`.`ID_rodzaju_poz_zak` = `rodzaje_pozycji_zakupowych`.`ID_rodzaju_pozycji_zakupowej` AND `zakupy`.`ID_sprzedajacego` = `zamawiajacy`.`ID_zamawiajacego` AND ( ( `pozycje_zakupowe`.`waga_pozycji` IS NULL AND `rodzaje_pozycji_zakupowych`.`ID_asortyment` = 1 ) OR `listy_zakupowe`.`ilosc_zakupy` IS NULL OR `listy_zakupowe`.`cena_pozycji` IS NULL ) GROUP BY `ktodod` UNION SELECT `wyroby4`.`kto_dodal`, COUNT( `wyroby4`.`kto_dodal`) FROM `firma`.`pozycje_zamowieniowe` AS `pozycje_zamowieniowe`, `firma`.`wyroby4` AS `wyroby4`, `firma`.`zamowienia` AS `zamowienia`, `firma`.`zamawiajacy` AS `zamawiajacy`, `firma`.`widok_aktualne_ceny2` AS `widok_aktualne_ceny2` WHERE `pozycje_zamowieniowe`.`ID_wyrobu` = `wyroby4`.`ID_wyrobu` AND `pozycje_zamowieniowe`.`ID_zamowienia` = `zamowienia`.`ID_zamowienia` AND `zamowienia`.`ID_zamawiajacego` = `zamawiajacy`.`ID_zamawiajacego` AND `pozycje_zamowieniowe`.`ID_pozycji_zamowieniowej` = `widok_aktualne_ceny2`.`ID_poz` AND ( `widok_aktualne_ceny2`.`aktualna_cena` IS NULL OR `wyroby4`.`rbh_spawanie` IS NULL OR `wyroby4`.`rbh_przygotowanie` IS NULL ) GROUP BY `wyroby4`.`kto_dodal` ) AS nowa WHERE ktodod = (SELECT imie_nazwisko FROM uzytkownicy_loginy WHERE loginy = SUBSTRING_INDEX ( USER(), '@', 1)) GROUP BY ktodod
i trochę złe wyniki mi wychodzą.
Gdy w dwóch osobnych zapytaniach wartość COUNt mam odpowiednio 1 i 2 to suma tego zapytania powyżej wychodzi mi 3, ale gdy np w tych dwóch SELECTach mam wartości Count 1 i 1 to suma całego zapytania wyskakuje mi 1. Nie mam pojęcia dlaczego tak się dzieje....czy widzicie może coś w tym zapytaniu co może powodować taką anomalię?