Правильный подход для получения значений из таблиц - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь получить записи из таблицы. Моя структура таблицы такая, как показано ниже, а id - это первичный ключ

| id | location| parent_id |
|----|---------|-----------|
| 1  | abc     | NULL      |
| 2  | xyz     | 1         | 
| 3  | def     | 2         |

Я пытаюсь получить идентификатор, имя, parent_id и parent_name. Я использую приведенный ниже запрос на соединение, чтобы получить результат, и он отлично работает. Я просто хотел высказать мнение, есть ли лучший способ получить результаты.

Я использовал запрос на соединение, чтобы получить результаты.

SELECT location1.id as childid,
location1.location as childlocation ,
locationparent.id as parentid,
locationparent.location as parentlocation  
FROM location  location1
JOIN location  locationparent 
ON location1.parent_id = locationparent.id  
WHERE location1.id =2  ;

1 Ответ

0 голосов
/ 11 июня 2019

Вот пример того, как этого можно добиться с помощью иерархического запроса (используя CONNECT BY).Я добавил еще несколько примеров строк данных, чтобы лучше продемонстрировать концепцию.

SQL> WITH location_tbl (id, location, parent_id) AS (
  2    SELECT 1, 'abc', NULL from dual UNION ALL
  3    SELECT 2, 'xyz', 1 from dual UNION ALL
  4    SELECT 3, 'def', 2 from dual UNION ALL
  5    SELECT 4, 'ggg', 2 from dual UNION ALL
  6    SELECT 5, 'hhh', 3 from dual UNION ALL
  7    SELECT 6, 'iii', 3 from dual
  8  )
  9  SELECT id, location, parent_id, PRIOR location parent_location
 10    FROM location_tbl
 11    CONNECT BY PRIOR id = parent_id
 12    START WITH id = 1;

        ID LOCATION  PARENT_ID PARENT_LOCATION
---------- -------- ---------- ---------------
         1 abc                                
         2 xyz               1 abc            
         3 def               2 xyz            
         5 hhh               3 def            
         6 iii               3 def            
         4 ggg               2 xyz            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...