Как сделать что-то вроде джойна из таблицы в ту же самую таблицу?

Ссылка скопирована
1 ответ
SELECT GD_Citizen_ClassifierBase.Id, GD_Citizen_ClassifierBase.Name, GD_Citizen_ClassifierBase.Topic FROM GD_Citizen_ClassifierBase

SELECT GD_Citizen_ClassifierBase.Id, GD_Citizen_ClassifierBase.Name, GD_Citizen_ClassifierBase.Topic FROM GD_Citizen_ClassifierBase

Как сделать что-то вроде джойна из таблицы в ту же самую таблицу?

Вопросы и их тематики хранятся в одной и той же таблице. Как вывести вопрос и рядом вместо id тематики имя тематики из этой же таблицы?

Дополнительно:

SELECT q.*, s.Name AS SectionName, t.Name AS TopicName,        th.Name AS ThemeName   FROM GD_Citizen_ClassifierBase AS q   JOIN GD_Citizen_ClassifierBase AS s ON s.id = q.Section   JOIN GD_Citizen_ClassifierBase AS t ON t.id = q.Topic   JOIN GD_Citizen_ClassifierBase AS th ON th.id = q.Theme

SELECT q.*, s.Name AS SectionName, t.Name AS TopicName, th.Name AS ThemeName FROM GD_Citizen_ClassifierBase AS q JOIN GD_Citizen_ClassifierBase AS s ON s.id = q.Section JOIN GD_Citizen_ClassifierBase AS t ON t.id = q.Topic JOIN GD_Citizen_ClassifierBase AS th ON th.id = q.Theme

  • Разобрался, благодарю!!

Ответы:

Еще бы какой-то атрибут добавить, чтобы тип записи различать - тогда жить можно.

select t1.*, -- тематики       t2.* -- вопросы from table_1 t1 join table_1 t2 on t2.topic = t1.id where t1.topic is null and t1.Name like 'Тематика%' -- не хватает атрибута type, чтобы различать раздел от тематики

select t1.*, -- тематики t2.* -- вопросы from table_1 t1 join table_1 t2 on t2.topic = t1.id where t1.topic is null and t1.Name like 'Тематика%' -- не хватает атрибута type, чтобы различать раздел от тематики

  • Еще бы какой-то атрибут добавить, чтобы тип записи различать - тогда жить можно

    Дык есть... TOPIC IS NULL - для категорий TRUE, для вопросов FALSE.

  • А разделы как определять?
  • alexalexes, Все атрибуты что есть, но нет ни одного, по которому можно было бы определить вопрос это или тематика, или что то еще

    Как сделать что-то вроде джойна из таблицы в ту же самую таблицу?

    Я пробовал что то подобное, не получается

    Как сделать что-то вроде джойна из таблицы в ту же самую таблицу?

  • Misuta, Всё есть, только неявно. Если id этой строки есть где-то в колонке Section, то это раздел.
  • Понял, сквозной Id для нескольких подклассов сущностей.
    Все равно тут нормализация напрашивается.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Алексей Денисов Ответ

Для выполнения операции, подобной джойну таблицы саму с собой в SQL, можно использовать концепцию подзапроса (subquery) или временной таблицы. Вот примеры обоих методов:

1. Использование подзапроса (subquery):

SELECT t1.column1, t1.column2, t2.column1, t2.column2
FROM table_name t1
JOIN (SELECT column1, column2 FROM table_name) t2
ON t1.column1 = t2.column1;

SELECT t1.column1, t1.column2, t2.column1, t2.column2 FROM table_name t1 JOIN (SELECT column1, column2 FROM table_name) t2 ON t1.column1 = t2.column1;

В данном примере мы выбираем столбцы из таблицы `table_name` дважды, первый раз как `t1` и второй раз как `t2`. Мы затем объединяем эти две таблицы по общему столбцу `column1`.

2. Использование временной таблицы:

CREATE TEMPORARY TABLE temp_table
SELECT column1, column2
FROM table_name;
 
SELECT t1.column1, t1.column2, t2.column1, t2.column2
FROM table_name t1
JOIN temp_table t2
ON t1.column1 = t2.column1;
 
DROP TEMPORARY TABLE temp_table;

CREATE TEMPORARY TABLE temp_table SELECT column1, column2 FROM table_name; SELECT t1.column1, t1.column2, t2.column1, t2.column2 FROM table_name t1 JOIN temp_table t2 ON t1.column1 = t2.column1; DROP TEMPORARY TABLE temp_table;

Здесь мы сначала создаем временную таблицу `temp_table`, копируя в нее необходимые столбцы из основной таблицы. Затем мы присоединяем основную таблицу к временной таблице по общему столбцу `column1`. Наконец, мы удаляем временную таблицу, чтобы не захламлять базу данных.

Оба метода будут работать и позволят вам проводить операции джойна таблицы с самой собой в SQL. Однако, выбор конкретного метода зависит от ваших предпочтений и особенностей вашей базы данных.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно