🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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)
#195627
Author: Tadeusz
Date: Wed, 27 Jun 2018 08:05
31 lines
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)
#195628
Author: Tomek
Date: Wed, 27 Jun 2018 09:12
41 lines
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)
#195629
Author: Tadeusz
Date: Wed, 27 Jun 2018 09:52
46 lines
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)
#195630
Author: Tomek
Date: Wed, 27 Jun 2018 15:02
26 lines
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)
#195631
Author: Tadeusz
Date: Wed, 27 Jun 2018 18:43
34 lines
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