sql contagem dupla na instrução join
Eu tenho essas duas instruções SQL e o que preciso fazer é juntá-las em uma única instrução, mas quando o faço, o resultado é inadequado. : /
select
nieruchomosci.nieruchomoscnr, count(wynajecia.nieruchomoscNr) as wynajecia
from
nieruchomosci, wynajecia
where
nieruchomosci.nieruchomoscnr = wynajecia.nieruchomoscNr
GROUP BY
nieruchomosci.nieruchomoscnr;
select
nieruchomosci.nieruchomoscnr, count(wizyty.nieruchomoscnr) as wizyty
from
nieruchomosci, wizyty
where
wizyty.nieruchomoscnr = nieruchomosci.nieruchomoscnr
GROUP BY
nieruchomosci.nieruchomoscnr;
É assim que eu me juntei a eles:
select
nieruchomosci.nieruchomoscnr,
count(wynajecia.nieruchomoscNr) as wynajecia,
count(wizyty.nieruchomoscnr) as wizyty
from
nieruchomosci, wynajecia, wizyty
where
nieruchomosci.nieruchomoscnr = wynajecia.nieruchomoscNr
and wizyty.nieruchomoscnr = nieruchomosci.nieruchomoscNr
GROUP BY
nieruchomosci.nieruchomoscnr;
Com isso, os números em 'wynajecia' e 'wizyty' são os mesmos, o que está errado. : /
EDITAR:
Com este código, recebo:
A14 8 8
B16 6 6
B17 4 4
B18 4 4
B21 4 4
G01 6 6
L94 10 10
A saída correta deve ser esta:
A14 2 4
B16 3 2
B17 2 2
B18 2 2
B21 2 2
G01 3 2
L94 2 5
Eu consegui obter um por este código:
select nieruchomosci.nieruchomoscnr,
(select count(wynajecia.nieruchomoscNr) from wynajecia where wynajecia.nieruchomoscNr = nieruchomosci.nieruchomoscnr) as wynajecia,
(select count(wizyty.nieruchomoscNr) from wizyty where wizyty.nieruchomoscNr = nieruchomosci.nieruchomoscnr) as wizyty
from nieruchomosci
Mas não faço isso, que essa é a maneira correta de lidar com o problema.