Question: ```
              SELECT a.product_name
                   , a.product_price
                   , c.restaurant_id
                   , c.restaurant_name
                   , c.phone_number
                FROM MENU a 
RIGHT EXCEPTION JOIN RESTAURANT c 
                  ON a.restaurant_id=c.restaurant_id 
            ORDER BY a.restaurant_id
                   ;

```

i am getting a error 

> 
> Answer: The ORA-00905 is given to indicate a malformed statement, where the Oracle parser indicates that a statement has a missing keyword. 
> 
> 
> 

The Oracle docs note this on the ora-00905 error: 

> 
> Cause: A required keyword is missing. ... Upon encountering ORA-00905, you must correct syntax because there is a missing keyword.
> 
> 
>

Answer: 
There is no such thing as an `exception join` in Oracle. As far as concerns, only DB2 supports this syntax.

If you want all menus without a restaurant, I would suggest `not exists`:

```
select m.*
from menu m
where not exists (select 1 from restaurant r where r.restaurant_id = m.restaurant_id)
order by m.restaurant_id

```

You can also express this with an anti-`left join`:

```
select m.*
from menu m
left join restaurant r on r.restaurant_id = m.restaurant_id 
where r.restaurant_id is null
order by m.restaurant_id    

```

On the other hand, if you want all restaurants without a menu, you can just invert the tables in the query:

```
select r.*
from restaurant r
where not exists (select 1 from menu m where r.restaurant_id = m.restaurant_id)
order by r.restaurant_id

```
Oracle does not support `EXCEPTION JOIN`. I don't think it's ANSI syntax either. That must be from some other flavor of database.