Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Zagnieżdżone podzapytanie SQL Odwołujące się do kolumny dziadków

Jest to ograniczenie w Oracle SQL:nie możesz odwoływać się do nadrzędnego elementu zapytania z podzapytania o głębokości większej niż 1 poziom.

W takim przypadku użyłbym funkcji:

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;

Twoje zapytanie wyglądałoby tak:

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Funkcja Oracle Lag z parametrem dynamicznym

  2. Wyświetl rekordy z dwóch tabel obok siebie pasujące tylko do niektórych pól

  3. Jak wymusić elementy tworzenia xmlforest, nawet jeśli wartość wyrażenia ma wartość null?

  4. Wykonaj natychmiastowe zaznaczenie nie zwraca żadnych wartości

  5. Podłączanie SQL Server do Oracle