Thread View: pl.comp.bazy-danych
5 messages
5 total messages
Started by Tadeusz
Wed, 27 Jun 2018 08:05
Podzapytanie z COUNT i grupowaniem działa inaczej jako samodzielne (MySQL)
Author: Tadeusz
Date: Wed, 27 Jun 2018 08:05
Date: Wed, 27 Jun 2018 08:05
31 lines
2211 bytes
2211 bytes
Dzień dobry, dotyczy MySQL 5.5.54 (Ubuntu 12.04.1) w zapytaniu typu: --------------------------------------------------------------------------------------- select A, B, C, D, ( select COUNT(E) from EE.T4 where KOL_X IN(3,4,5) group by COUNT(E) ) FROM TABELA1 T1 INNER JOIN TABELA2 T2 ON T2.id = T1.id INNER JOIN TABELA3 T3 ON T3.id = T2.id LEFT JOIN TABELA4 T4 ON T4.id = T1.id -- nie wszystkie wystąpienia z T1.id są powiązane z T4.id GROUP BY A, B, C, D -- dlatego nie mogę dodać WHERE i GROUP BY przy LEFT JOIN --------------------------------------------------------------------------------------- na końcu zliczane wystąpienia COUNT(E) pokazuje wszystkie wystąpienia tak jakby nie brał pod uwagę klauzuli where KOL_X IN(3,4,5) i group by COUNT(E) natomiast wyjęte ów podzapytanie wykonane osobno zwraca poprawną ilość zliczeń biorąc pod uwagę where KOL_X IN(3,4,5) i group by COUNT(E) proszę mnie nakierować gdzie jest błąd, czy brać pod uwagę błąd w wersji (mało prawdopodobne) MySQL? z góry dziękuję za pomoc pozdrawiam Tadziu
Re: Podzapytanie z COUNT i grupowaniem działa inaczej jako samodzielne (MySQL)
Author: Tomek
Date: Wed, 27 Jun 2018 09:12
Date: Wed, 27 Jun 2018 09:12
41 lines
2470 bytes
2470 bytes
W dniu 27.06.2018 o 10:05, Tadeusz pisze: > Dzień dobry, > > dotyczy MySQL 5.5.54 (Ubuntu 12.04.1) > > w zapytaniu typu: > > --------------------------------------------------------------------------------------- > select A, B, C, D, ( select COUNT(E) from EE.T4 where KOL_X IN(3,4,5) > group by COUNT(E) ) > FROM TABELA1 T1 > INNER JOIN TABELA2 T2 ON T2.id = T1.id > INNER JOIN TABELA3 T3 ON T3.id = T2.id > LEFT JOIN TABELA4 T4 ON T4.id = T1.id -- nie wszystkie wystąpienia z > T1.id są powiązane z T4.id > GROUP BY A, B, C, D -- dlatego nie mogę dodać WHERE > i GROUP BY przy LEFT JOIN > --------------------------------------------------------------------------------------- > > na końcu zliczane wystąpienia > COUNT(E) pokazuje wszystkie wystąpienia tak jakby nie brał pod uwagę > klauzuli where KOL_X IN(3,4,5) i group by COUNT(E) > > natomiast wyjęte ów podzapytanie wykonane osobno zwraca poprawną ilość > zliczeń biorąc pod uwagę where KOL_X IN(3,4,5) i group by COUNT(E) > > proszę mnie nakierować gdzie jest błąd, czy brać pod uwagę błąd w wersji > (mało prawdopodobne) MySQL? > > z góry dziękuję za pomoc > > pozdrawiam Tadziu > A nie możesz dać w sekcji "ON" następnego warunku i już bez podzapytania w SELECT? LEFT JOIN TABELA4 T4 ON T4.id = T1.id AND T4.KOL_X IN(3,4,5) A jak już zliczasz (podzapytanie) w SELECT to po co ten LEFT JOIN?
Re: Podzapytanie z COUNT i grupowaniem dziaĹa inacze j jako samodzielne (MySQL)
Author: Tadeusz
Date: Wed, 27 Jun 2018 09:52
Date: Wed, 27 Jun 2018 09:52
46 lines
2630 bytes
2630 bytes
Tomek wrote: > W dniu 27.06.2018 o 10:05, Tadeusz pisze: > > Dzień dobry, > > > > dotyczy MySQL 5.5.54 (Ubuntu 12.04.1) > > > > w zapytaniu typu: > > > > --------------------------------------------------------------------------------------- > > select A, B, C, D, ( select COUNT(E) from EE.T4 where KOL_X IN(3,4,5) > > group by COUNT(E) ) > > FROM TABELA1 T1 > > INNER JOIN TABELA2 T2 ON T2.id = T1.id > > INNER JOIN TABELA3 T3 ON T3.id = T2.id > > LEFT JOIN TABELA4 T4 ON T4.id = T1.id -- nie wszystkie wystąpienia z > > T1.id są powiązane z T4.id > > GROUP BY A, B, C, D -- dlatego nie mogę dodać WHERE > > i GROUP BY przy LEFT JOIN > > --------------------------------------------------------------------------------------- > > > > na końcu zliczane wystąpienia > > COUNT(E) pokazuje wszystkie wystąpienia tak jakby nie brał pod uwagę > > klauzuli where KOL_X IN(3,4,5) i group by COUNT(E) > > > > natomiast wyjęte ów podzapytanie wykonane osobno zwraca poprawną ilość > > zliczeń biorąc pod uwagę where KOL_X IN(3,4,5) i group by COUNT(E) > > > > proszę mnie nakierować gdzie jest błąd, czy brać pod uwagę błąd w wersji > > (mało prawdopodobne) MySQL? > > > > z góry dziękuję za pomoc > > > > pozdrawiam Tadziu > > > > > A nie możesz dać w sekcji "ON" następnego warunku i już bez podzapytania > w SELECT? > > LEFT JOIN TABELA4 T4 ON T4.id = T1.id AND T4.KOL_X IN(3,4,5) > > A jak już zliczasz (podzapytanie) w SELECT to po co ten LEFT JOIN? próbowałem - nie mogę bo nie wszystko jest powiązane ID i jak dodam to zawęzi wynik tylko do powiązanych ...
Re: Podzapytanie z COUNT i grupowaniem dziaĹa inacze j jako samodzielne (MySQL)
Author: Tomek
Date: Wed, 27 Jun 2018 15:02
Date: Wed, 27 Jun 2018 15:02
26 lines
1805 bytes
1805 bytes
W dniu 27.06.2018 o 11:52, Tadeusz pisze: > Tomek wrote: > >> W dniu 27.06.2018 o 10:05, Tadeusz pisze: >>> Dzień dobry, >>> >> >> >> A nie możesz dać w sekcji "ON" następnego warunku i już bez podzapytania >> w SELECT? >> >> LEFT JOIN TABELA4 T4 ON T4.id = T1.id AND T4.KOL_X IN(3,4,5) >> >> A jak już zliczasz (podzapytanie) w SELECT to po co ten LEFT JOIN? > > próbowałem - nie mogę bo nie wszystko jest powiązane ID i jak dodam to > zawęzi wynik tylko do powiązanych ... > Jak dasz warunki na T4 w WHERE to faktycznie z LEFT JOIN zrobi się INNER JOIN i wynik bedzie zawężony. Dlatego warunki musza byc w sekcji ON, wtedy LEFT JOIN zostanie LEFT JOIN'em
Re: Podzapytanie z COUNT i grupowaniem dziaÄąÂa inacze j jako samodzielne (MySQL)
Author: Tadeusz
Date: Wed, 27 Jun 2018 18:43
Date: Wed, 27 Jun 2018 18:43
34 lines
2204 bytes
2204 bytes
Tomek wrote: > W dniu 27.06.2018 o 11:52, Tadeusz pisze: > > Tomek wrote: > > > >> W dniu 27.06.2018 o 10:05, Tadeusz pisze: > >>> Dzień dobry, > >>> > >> > >> > >> A nie możesz dać w sekcji "ON" następnego warunku i już bez podzapytania > >> w SELECT? > >> > >> LEFT JOIN TABELA4 T4 ON T4.id = T1.id AND T4.KOL_X IN(3,4,5) > >> > >> A jak już zliczasz (podzapytanie) w SELECT to po co ten LEFT JOIN? > > > > próbowałem - nie mogę bo nie wszystko jest powiązane ID i jak dodam to > > zawęzi wynik tylko do powiązanych ... > > > > > > Jak dasz warunki na T4 w WHERE to faktycznie z LEFT JOIN > zrobi się INNER JOIN i wynik bedzie zawężony. > > Dlatego warunki musza byc w sekcji ON, > wtedy LEFT JOIN zostanie LEFT JOIN'em Dziękuję działa :) niepotrzebnie poza "WHERE" dawałem dla sekcji "ON" jeszcze "GROUP BY" "BRZDĘK" - KRAFTOWY BROWAR WISZĘ JAK NIC!!!
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads