Radosław Dumania

Radosław Dumania Senior Master Data
Analyst

Temat: Blad w kwerendzie

Moze mi ktos powiedziec co ja tutaj robie zle:

Tabela 1 - unikalne produkty

produkt
jablka
gruszki
czeresnie
banany

Tabela 2 - produkty i miasta

produkt miasto
jablka krakow
jablka rzeszow
jablka rzeszow
jablka
czeresnie krakow
czeresnie krakow
czeresnie
czeresnie piotrkow
czeresnie piotrkow
gruszki lodz
gruszki zakopane
gruszki lodz
gruszki gdansk
gruszki lublin
gruszki
gruszki torun

Dwie kwerendy grupujace - jedna grupuje miasta wedlug produktow (wylaczajac puste rekordy dla miast):

SELECT Table2.produkt, Table2.miasto
FROM Table2
GROUP BY Table2.produkt, Table2.miasto
HAVING (((Table2.miasto) Is Not Null));

A druga robi to samo z pustymi:

SELECT Table2.produkt, Table2.miasto
FROM Table2
GROUP BY Table2.produkt, Table2.miasto
HAVING (((Table2.miasto) Is Null));

I kwerenda z bledem:

Wyswietlac powinna rezultat tzn kolumny:

produkt z tabeli1, ilosc wystapien produktu z kwerendy1,ilosc wystapien produktu z kwerendy2

SELECT Table1.produkt, Count(Grupowanie_pustych.produkt) AS CountOfprodukt, Count(Grupowanie_niepustych.produkt) AS CountOfprodukt FROM Grupowanie_niepustych RIGHT JOIN (Grupowanie_pustych RIGHT JOIN Table1 ON Grupowanie_pustych.[produkt] = Table1.produkt) ON Grupowanie_niepustych.[produkt] = Table1.produkt
GROUP BY Table1.produkt;

Wynik jest nieprawidlowy :(

produkt CountOfProduktQ1 CountOfProduktQ2
banany 0 0
czeresnie 2 2
gruszki 5 5
jablka 2 2

Powinno byc

produkt CountOfProduktQ1 CountOfProduktQ2
banany 0 0
czeresnie 1 2
gruszki 1 5
jablka 1 2

Co robie zle ?
Michał Dziubek

Michał Dziubek Programista,
INFORM\'1

Temat: Blad w kwerendzie

having służy do warunków na agregatach

Stwórz kwerendę ProduktyIlosc:

select
produkt
,sum(ilNiepuste) as Niepuste
,sum(ilPuste) as Puste
From (
Select distinct
produkt
,miasto
,iif(len(miasto)>0,1,0) as IlNiepuste
,iif(len(miasto)>0,0,1) as IlPuste
From
tab2
) as Agg
group by
produkt


I docelowa kwerenda

Select
tab1.produkt
,NZ(niepuste,0) as Zmiastem
,nz(puste,0) as bezmiasta
from
tab1
left join ProduktyIlosc on tab1.produkt = ProduktyIlosc.Produkt


Piszę z pamięci, chodzi o sens...Michał Dziubek edytował(a) ten post dnia 28.03.12 o godzinie 00:49

Następna dyskusja:

Puste komórki w kwerendzie




Wyślij zaproszenie do