oracle sql joins returns multiple row than expected
In this case Oracle works as it should, its your expectation that is incorrect.
Why do you expect 24 rows?
zz_value table has 8 rows with 9863 gg_id. zz_gg table has 8 rows with 9863 gg_id. pos_id and nach_id are the same in all rows in your sample. With your join conditions, this alone return 64 rows for gg_id 9863.
Your select with those columns returns duplicated rows. You can reduce that amount by using select distinct ..., but even that will return more than 24 rows because of the data_id column in zz_gg.