Get all members from country depending on multiple tables
Here's a more compact formulation (SQL Fiddle):

SELECT DISTINCT user.name, address.country
    FROM orga2Address
        INNER JOIN orga2User
            ON orga2User.idOrga = orga2Address.idOrga
        RIGHT OUTER JOIN user
            ON user.id = orga2User.idUser
        INNER JOIN address
            ON address.id IN (user.idAddress, orga2Address.idAddress)
    WHERE address.country = 'DE';


The trick is, instead of UNION, perform a JOIN with more than one join path.  (We unfortunately need to use DISTINCT, but that is no worse than your UNION, which also de-duplicates results.)

In addition, I suggest:


formatting your code with better indentation.  In this example, the SELECT statement has a FROM clause and a WHERE clause.  The FROM clause has multiple JOINs, each of which has an ON clause.
using single quotes for string literals like 'DE', which is standard ANSI SQL.  Using double quotes for strings is a MySQLism, and it fails if SQL_MODE = 'ANSI_QUOTES' is in force.
avoid overdoing the `quotes`.  If you didn't need them in your CREATE TABLE statements, you don't need them in your query either.