Łączenie zapytań + zliczanie kolumn mysql

Odpowiedz Nowy wątek
2015-02-19 11:57
0

mam dwa pytania jak połączyć te trzy zapytania

SELECT Nr_syntetyka,Kwota as aa from konta_syntetyczne,rozliczenie_podatku,konta_analityczne where Nr_analityka=0 and konta_analityczne.Id_konta_analitycznego=rozliczenie_podatku.Id_konta_analitycznego and konta_syntetyczne.Id_konta_syntetyka=rozliczenie_podatku.Id_konta_syntetyka group by konta_syntetyczne.Nr_syntetyka
SELECT Nr_syntetyka,Kwota as a from konta_syntetyczne,rozliczenie_podatku,konta_analityczne where Nr_analityka=1 and konta_analityczne.Id_konta_analitycznego=rozliczenie_podatku.Id_konta_analitycznego and konta_syntetyczne.Id_konta_syntetyka=rozliczenie_podatku.Id_konta_syntetyka group by konta_syntetyczne.Nr_syntetyka
SELECT Nr_syntetyka,Kwota as b from konta_syntetyczne,rozliczenie_podatku,konta_analityczne where Nr_analityka=5 and konta_analityczne.Id_konta_analitycznego=rozliczenie_podatku.Id_konta_analitycznego and konta_syntetyczne.Id_konta_syntetyka=rozliczenie_podatku.Id_konta_syntetyka group by konta_syntetyczne.Nr_syntetyka

cała wynik wyglądał tak

Nr_syntetyka|aa|a+b=c|f - itd

f- kolejne zapytania sum różniące się Nr_analityka np Nr_analityka=5,Nr_analityka=12

lub połączenie pierwszego zapytania z

SELECT Nr_syntetyka,sum(Kwota) as ab from konta_syntetyczne,rozliczenie_podatku,konta_analityczne where Nr_analityka in (1,5) and konta_analityczne.Id_konta_analitycznego=rozliczenie_podatku.Id_konta_analitycznego and konta_syntetyczne.Id_konta_syntetyka=rozliczenie_podatku.Id_konta_syntetyka group by konta_syntetyczne.Nr_syntetyka

cała wynik wyglądał tak

Nr_syntetyka|aa|ab|f - itd

chodzi głównie o połączenie kilku selectów

i drugie pytanie jak w osobnym selecie wyliczyć sumę aa,ab,f ??

Dzięki za pomoc ?

edytowany 3x, ostatnio: marbano, 2015-02-19 12:06

Pozostało 580 znaków

2015-02-19 13:21
0

Tabela przestawna - Pivot
http://en.wikibooks.org/wiki/MySQL/Pivot_table


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf

Pozostało 580 znaków

2015-02-19 22:37
0

Zrobiłem coś takiego

SELECT Nr_syntetyka,rp0.Kwota as Ogolem ,rp1.Kwota as Produkcja_wolna,rp2.Kwota as Produkcja_opodatkowana from konta_syntetyczne,rozliczenie_podatku as rp0,rozliczenie_podatku as rp1,rozliczenie_podatku as rp2,konta_analityczne as ka0,konta_analityczne as ka1,konta_analityczne as ka2 where ka0.Nr_analityka in (0) and ka1.Nr_analityka in (1,5) and ka2.Nr_analityka in (2,9,6) and ka0.Id_konta_analitycznego=rp0.Id_konta_analitycznego and ka1.Id_konta_analitycznego=rp1.Id_konta_analitycznego and 
ka2.Id_konta_analitycznego=rp2.Id_konta_analitycznego and konta_syntetyczne.Id_konta_syntetyka=rp0.Id_konta_syntetyka and konta_syntetyczne.Id_konta_syntetyka=rp1.Id_konta_syntetyka and konta_syntetyczne.Id_konta_syntetyka=rp2.Id_konta_syntetyka group by konta_syntetyczne.Nr_syntetyka

Ogolem i Produkcje wolna liczy mi prawidłowo lecz Produkcje opodatkowana już źle liczy co może być spowodowane tym że mam aż trzy Nr_analityka do zsumowania ?

edytowany 1x, ostatnio: marbano, 2015-02-19 22:48

Pozostało 580 znaków

2015-02-20 00:17
0
  1. Połącz po ludzku - JOINami
  2. Wywal grupowanie
  3. Sformatuj ładnie zapytanie

Nie wplynie to na wynik, ale łatwiej można zauważyć błąd

Pozostało 580 znaków

2015-02-20 12:52
0

JOIN to problem bo nie umiem nim łączyć jak na razie umiem wherem ale próbuję cały czas stworzyć zapytanie za pomocą JOIN - ogółem już wyswietliłem

SELECT Nr_syntetyka,rp0.Kwota as Ogolem 
from konta_syntetyczne syn
left join rozliczenie_podatku rp0 on rp0.Id_konta_syntetyka=syn.Id_konta_syntetyka 
left join konta_analityczne ka0 on ka0.Id_konta_analitycznego=rp0.Id_konta_analitycznego and Nr_syntetyka in (0)
group by syn.Nr_syntetyka

teraz muszę myśleć jak dodać resztę ale mi nie działa mam zrobić analogicznie do tego ?
faktycznie jak wywalę grupowanie znajdę szybciej błąd bo pojawiają się wszystkie wyniki

edytowany 4x, ostatnio: marbano, 2015-02-20 13:08

Pozostało 580 znaków

2015-02-20 15:31
0

Połączyłeś ładnie JOINem, użyłeś aliasów. Dwa plusy... Nie wiem, czy wiesz, ale to zapytanie (z LEFT JOINami) jest zupełnie inne, niż z łączeniem we WHERE (we WHERE nie da się tego zrobić prosto - trzeba ORować).

Pozostało 580 znaków

2015-02-20 15:48
0

Analogicznie próbuje zrobić z Produkcja_wolna i faktycznie jak piszesz jest inny wynik zapytania to co użyć żeby rezultat był taki sam ?

SELECT Nr_syntetyka,rp0.Kwota as Ogolem,rp1.Kwota as Produkcja_wolna
from konta_syntetyczne syn
left join rozliczenie_podatku rp0 on rp0.Id_konta_syntetyka=syn.Id_konta_syntetyka 
left join konta_analityczne ka0 on ka0.Id_konta_analitycznego=rp0.Id_konta_analitycznego and Nr_syntetyka in (0)
left join rozliczenie_podatku rp1 on rp1.Id_konta_syntetyka=syn.Id_konta_syntetyka 
left join konta_analityczne ka1 on ka1.Id_konta_analitycznego=rp0.Id_konta_analitycznego and Nr_syntetyka in (1,5)
group by syn.Nr_syntetyka

zarówno Ogolem i produkcja wolna wyświetla to samo czyli wartość Ogolem

edytowany 1x, ostatnio: marbano, 2015-02-20 15:51

Pozostało 580 znaków

2015-02-20 23:28
0

Tak sie chyba nie da... Bez znajomosci tabel i zawartosci nie pomoge. Wrzuc choc kawałek na sqlfiddle, napiszz co chcesz osiagnac dla tych danych, to chetnie pomoge...

Pozostało 580 znaków

2015-02-21 09:07
0

http://sqlfiddle.com/#!2/6bf2f9

chodzi o to że muszę wyświetlić Nr_syntetyka|(Nr_analityka=0) as Ogolem|sum(Nr_analityka=1 i Nr_analityka=5) as Wolna|sum(Nr_analityka=2 i Nr_analityka=6 i Nr_analityka=9) as Opod|sum(Nr_analityka=3 i Nr_analityka=7) as KO|(Nr_analityka=4) as Pod

i w innym zapytaniu sumę kolumn

Ogolem|Wolna|Opod|KO|Pod

Pozostało 580 znaków

2015-02-22 22:24
0

Przepraszam za post pod postem ale może jednak ktoś pomoże ?? Z góry dzięki

edytowany 1x, ostatnio: marbano, 2015-02-23 00:06

Pozostało 580 znaków

2015-02-23 08:52

http://sqlfiddle.com/#!2/6bf2f9/8

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0