Как отобразить ребенка вместе с внуком?

Я получаю название всех великих детских идентификаторов, но я не получаю заголовков дочерних идентификаторов, пожалуйста, помогите мне получить и то, и другое

вот мой запрос:

SELECT g.title  FROM object_data a,`object_reference` b,`tree` c,`object_reference` d,`tree` e,`object_reference` f,`object_data` g WHERE a.`obj_id` = b.`obj_id` AND b.`ref_id` = c.`parent` AND c.`child` = d.`ref_id` AND d.`ref_id` = e.`parent` AND e.`child` = f.`ref_id` AND f.`obj_id` = g.`obj_id`AND g.type='tst' AND a.obj_id=3217

вот пример данных: таблица object_data:

obj_id | type | title 
-------+------+------
3217   |crs   |it 
3221   |grp   |xyz 
3228   |tst   |test 
3264   |tst   |test3 

таблица object_reference:

ref_id | obj_id 
-------+---------
337    |3217       
338    |3221      
343    |3228 
371    |3264

дерево стола:

tree | child | parent 
-----+-------+------
1    |338    |337 
2    |343    |338 
3    |371    |337

вот ожидаемый результат:

title
-----
test
test3

но я получаю только test3 в результате вышеуказанного запроса

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
49
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я предполагаю, что вы ищете все названия идентификаторов, у которых нет дочерних элементов, потому что вам не интересно видеть XYZ, который является родительским элементом test. Если мое предположение верно, следующий запрос поможет получить желаемый результат.

select title from object_data c , object_reference d
where c.obj_id=d.obj_id
and d.ref_id in (select a.child from tree a, tree b
where a.child =b.parent(+)
and b.parent is null);

Результат:

ЗАГЛАВИЕ

контрольная работа

test3

Чтобы отобразить все тесты по заданному курсу (корень дерева), работает следующий запрос

with parent_child (child, parent) as
(
select child, parent from tree 
union all
select t.child, parent_child.parent 
from parent_child , tree t where t.parent=parent_child.child)
select c.title from parent_child a,object_data c , object_reference d
where c.obj_id=d.obj_id
and d.ref_id=a.child
and parent=337 --Provide the root id
and type='tst'; --removing this would display all the nodes of a tree, including XYZ

привет авани спасибо за ответ где я могу написать c.obj_id = 3217

Gautham Goud 22.03.2018 15:28

Не могли бы вы уточнить свои требования относительно того, почему вам нужно упомянуть или жестко запрограммировать obj_id?

Avani 22.03.2018 15:41

да, у меня есть курсы, и в этих курсах есть группы и тесты. некоторые тесты находятся непосредственно в курсе, а некоторые тесты находятся в группах, которые находятся в рамках курса ... так что мой главный вывод - когда я пишу запрос с идентификатором курса, мне нужно пройти все тесты

Gautham Goud 22.03.2018 15:45

Я новичок в sql, я не могу решить эту проблему должным образом, пожалуйста, помогите мне решить эту проблему

Gautham Goud 22.03.2018 15:50

да, xyz является его дочерним элементом, а тест - дочерним элементом xyz ... над таблицами с дочерним и родительским деревом

Gautham Goud 22.03.2018 16:06

я получаю ошибку, например, нераспознанный тип оператора (рядом с WITH)

Gautham Goud 23.03.2018 01:33

Поскольку ваш вопрос непонятен, попробуйте следующее:

select a.title from object_data as a 
         inner join object_reference b on a.obj_id = b.obj_id
         inner join tree as c on b.ref_id = c.child

Если это не то, что вы хотели, уточните, пожалуйста.

спасибо за резонанс. мой вопрос, когда я пишу ниже запрос SELECT g.title FROM object_data a, object_reference b, tree c, object_reference d, tree e, object_reference f, object_data g WHERE a.obj_id = b.obj_id AND b.ref_id = c.parent И c.child = d.ref_id И d.ref_id = e.parent И e.child = f.ref_id И f.obj_id = g.obj_idAND g.type = 'tst' И a.obj_id = 3217 получаю только внук (test3) не получает ребенка (test)

Gautham Goud 22.03.2018 15:29

Вам действительно НУЖНО использовать свой запрос таким образом?

jMarcel 22.03.2018 15:40

Другие вопросы по теме