Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ORA-01446 - cannot select ROWID from view with DISTINCT, GROUP BY, etc

I created a view that has a distinct in the select clause.

When I try to select all the records with "select * from view" I get the following error:

ORA-01446: cannot select ROWID from view with DISTINCT, GROUP BY, etc.

I was searching why this happens and came to this:

You tried to create a view that included a ROWID in the SELECT statement as well as a clause such as DISTINCT or GROUP BY. This is not allowed. Reference

This is awkward because the select stament in the view does not selects the rowid and it isn't being used in any other clause (where, order, etc..)

Any idea on this?

Update

I'm not able to post the query itself but i'm posting a look-a-like. Here it is:

SELECT DISTINCT t1.c1 TABLE1_C1,
t1.c2 TABLE1_C2,
t1.c3 TABLE1_C3,
t1.c4 TABLE1_C4,
t1.c4 TABLE1_C4,
t1.c5 TABLE1_C5,
t1.c6 TABLE1_C6,
t1.c7 TABLE1_C7,
t1.c8 TABLE1_C8,
t2.c1 TABLE2_C1,
t2.c2 TABLE2_C2,
t2.c3 TABLE2_C3,
t2.c4 TABLE2_C4,
t2.c5 TABLE2_C5,
t3.c1 TABLE3_C1,
t2.c6 TABLE2_C6,
t4.c1 TABLE4_C1,
t4.c2 TABLE4_C2,
t4.c3 TABLE4_C3
  FROM table1 t1
  LEFT JOIN table2 t2
  ON t1.c1 = t2.c7
  left JOIN table4 t4
  ON t4.c4 = t2.c1
  LEFT JOIN table3 t3
  ON (t2.c1 = t3.c2
  AND t2.c8 = t3.c3
  AND t2.c9 = t3.c4)
  WHERE (t2.cp5  = 0 or t2.cp5 is null)
  AND (t2.c3  =
    (SELECT MAX(c3)
    FROM table2 s_t2
    WHERE s_t2.c3 LIKE t2.c3
    AND s_t2.c7 = t1.c1
    ) or t2.c3 is null)
like image 557
Miguel Ribeiro Avatar asked Mar 21 '12 14:03

Miguel Ribeiro


1 Answers

If you use distinct or group by several rows can qualify the condition. So different executions would return different row id's and the other question if several rows qualify which one would you return?

This simply doesn't make sense

like image 180
steve Avatar answered Sep 19 '22 21:09

steve