sql >> Database teknologi >  >> RDS >> Oracle

SQL-indlejret underforespørgsel, der henviser til bedsteforældrekolonnen

Dette er en begrænsning i Oracle SQL:du kan ikke henvise til et overordnet forespørgselselement fra en underforespørgsel, der er mere end 1 niveau dyb.

Jeg ville bruge en funktion i sådan et tilfælde:

CREATE OR REPLACE FUNCTION get_title(p_position_id NUMBER) RETURN VARCHAR2 IS
   l_result       LONG;
   l_position_num NUMBER := 0;
BEGIN
   FOR cc IN (SELECT position_title
                FROM position_table
               WHERE position_table.position_id = p_position_id
                 AND rownum <= 3) LOOP
      l_result       := cc.position_title || ',';
      l_position_num := l_position_num + 1;
   END LOOP;
   RETURN l_result || rpad(',', 3 - l_position_num, ',');
END;

Din forespørgsel ville se sådan ud:

select
  name,
  phone,
  address,
  get_title(p.position_id) title
from person_view p



  1. Sådan aktiveres en CHECK-begrænsning i SQL Server (T-SQL-eksempel)

  2. Hvordan opretter man en database i SQL?

  3. Sæt indlejret forespørgsel i dvale ved hjælp af kriterier

  4. Sådan får du seneste rekord for hver gruppe ved hjælp af Entity Framework og MySQL inklusive relateret enhed