powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задачка на родственные связи sql
3 сообщений из 3, страница 1 из 1
Задачка на родственные связи sql
    #40030679
karin87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет! Я новичок. Попалась задачка, хотелось бы посоветоваться по поводу решения. Итак, задачка:
У каждого отца всегда только один сын. Сыновья в свою очередь также могут быть отцами. Необходимо написать запрос , чтобы получить пользователя вместе с его отцом и сыном. При этом таблица должна быть одна.
Есть такое решение:
Таблица users с полями id, name, son_id, father_id
Решение:

SELECT table2.users AS users, table2.son AS son, users.name AS father
FROM (SELECT table1.name AS users, table1.father_id AS father_id, users.name AS son
FROM users AS table1
LEFT JOIN users ON users.id=table1.son_id)
AS table2 LEFT JOIN users ON table2.father_id=users.id

Но хотелось бы его упростить. Ведь столбец father_id как бы и не нужен. Кто кому кем приходится можно узнать и с помощью son_id. И вот если мы убираем father_id, то у меня получается вывести только либо name и son, либо name и father

Либо получаем отцов:

SELECT *, user.name as father_name
FROM user
JOIN user as father ON father.id=user.son_id

Либо сыновей:

SELECT *, user.name as son_name
FROM user
JOIN user as son ON son.son_id=user.id
...
Рейтинг: 0 / 0
Задачка на родственные связи sql
    #40030695
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3 таблицы связываем... столбец father_id как бы и не нужен - да, это верно.
Код: sql
1.
2.
3.
4.
5.
SELECT U.name as "user", F.name as "father", S.name as "son"
FROM user as U /*(для пользователя)*/
JOIN user as F /*(для отца)*/
JOIN user as S /*(для сына)*/
ON /*(аккуратно прописываем связи таблиц)*/
...
Рейтинг: 0 / 0
Задачка на родственные связи sql
    #40030990
karin87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov, спасибо! Только с U не получилось, поэтому такое решение:

SELECT user.name as user, F.name as father, S.name as son
FROM user
LEFT JOIN user as F ON F.son_id=user.id
LEFT JOIN user as S ON S.id=user.son_id
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Задачка на родственные связи sql
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]