mam baze o strukturze:
CREATE TABLE `umowy` ( `NrUmowy` varchar(10) NOT NULL, `OpisUmowy` varchar(255) NOT NULL, `Grupa` varchar(255) NOT NULL, `Typ` varchar(255) NOT NULL, `Dzial` varchar(255) NOT NULL, `Jednostka` varchar(255) DEFAULT NULL, `Nazwisko` varchar(100) NOT NULL, `Imie` varchar(50) NOT NULL, `Poczatek` varchar(12) NOT NULL, `Koniec` varchar(12) NOT NULL, `BiezacyRok` varchar(5) NOT NULL, PRIMARY KEY (`NrUmowy`)); CREATE TABLE `zlecenie` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Wykonawca` varchar(255) NOT NULL, `DataFaktury` varchar(12) NOT NULL, `NrFaktury` varchar(20) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `dzielo` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Nazwisko` varchar(100) NOT NULL, `Imie` varchar(50) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `materialy` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Wykonawca` varchar(255) NOT NULL, `DataFaktury` varchar(12) NOT NULL, `NrFaktury` varchar(20) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `ogolne` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Data` varchar(12) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `prow` ( `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(6) NOT NULL, `Lacznie` double NOT NULL, `wyplaty` double NOT NULL, `zlecenie` double NOT NULL, `Materialy` double NOT NULL, `Uslugi` double NOT NULL, `dzielo` double NOT NULL, `koszty` double NOT NULL, `Ogolne` double NOT NULL, `VAT` double NOT NULL ); CREATE TABLE `blokady` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Data` varchar(12) NOT NULL, `Kwota` double NOT NULL, `Cel` varchar(100) NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `uslugi` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Wykonawca` varchar(255) NOT NULL, `DataFaktury` varchar(12) NOT NULL, `NrFaktury` varchar(20) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `wyplaty` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Miesiac` varchar(15) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `koszty` ( `Lp` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT, `NrUmowy` varchar(10) NOT NULL, `Rok` varchar(5) NOT NULL, `Nazwisko` varchar(100) NOT NULL, `Imie` varchar(50) NOT NULL, `Kwota` double NOT NULL, PRIMARY KEY (`Lp`)); CREATE TABLE `grupy_umow` ( `NazwaGrupy` varchar(255) NOT NULL, PRIMARY KEY (`NazwaGrupy`)); CREATE TABLE `jednostki` ( `NazwaJednostki` varchar(255) NOT NULL, `NazwaDzialu` varchar(255) NOT NULL, PRIMARY KEY (`NazwaJednostki`)); CREATE TABLE `typy_umow` ( `NazwaTypu` varchar(255) NOT NULL, `NazwaGrupy` varchar(255) NOT NULL, PRIMARY KEY (`NazwaTypu`)); CREATE TABLE `Dzialy` ( `NazwaDzialu` varchar(255) NOT NULL, PRIMARY KEY (`NazwaDzialu`));
i potrzebuje wydobyc dane z 7 tabel. Robie to tak:
SELECT a.NrUmowy, a.Grupa, a.Dzial, a.Nazwisko, b.sum(Kwota), b.Rok, c.sum(Kwota), c.Rok, d.sum(Kwota), d.Rok, e.sum(Kwota), e.Rok, f.sum(Kwota), f.Rok, g.sum(Kwota), g.Rok, m.sum(Kwota), m.Rok FROM umowy a LEFT JOIN zlecenie b ON b.NrUmowy = a.NrUmowy LEFT JOIN dzielo c ON c.NrUmowy = a.NrUmowy LEFT JOIN materialy d ON d.NrUmowy = a.NrUmowy LEFT JOIN uslugi e ON e.NrUmowy = a.NrUmowy LEFT JOIN wyplaty f ON f.NrUmowy = a.NrUmowy LEFT JOIN koszty g ON g.NrUmowy = a.NrUmowy LEFT JOIN ogolne m ON m.NrUmowy = a.NrUmowy GROUP BY b.NrUmowy, b.Rok, c.NrUmowy, c.Rok, d.NrUmowy, d.Rok, e.NrUmowy, e.Rok, f.NrUmowy, f.Rok, g.NrUmowy, g.Rok, m.NrUmowy, m.Rok
Chciałabym dodać jeszcze 2 tabele. Ale na chwilę obecną wydajnościowo działa to tak że po 4 godzinach brak efektu. Co mogę zrobić żeby uzyskać na początek te dane?
Dzięki
B