Witajcie,
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