Кажется, что только оператор SQL select невозможен.
https://stackoverflow.com/a/9056945/721597
Но с помощью функций, мне удалось это сделать.
Я создал функцию, называемую IsRelated (идентификатор, родитель) - который говорит, является ли идентификатор связан с родителем (если идентификатор = родитель они связаны между собой):
CREATE FUNCTION `IsRelated`(`GivenID` VARCHAR(10), ParentId VARCHAR(10)) RETURNS boolean
BEGIN
DECLARE related boolean;
DECLARE ch INT;
SET related = FALSE;
IF ParentId = GivenID THEN
SET related = TRUE;
ELSE
SET ch = GivenID;
myloop: WHILE ch IS NOT NULL DO
SELECT IF(parent_org_id = ch, NULL, parent_org_id) INTO ch FROM
(SELECT parent_org_id FROM organizations WHERE id = ch) A;
IF ch IS NOT NULL AND ch = ParentId THEN
SET related = TRUE;
LEAVE myloop;
END IF;
END WHILE;
END IF;
RETURN related;
END
Тогда я создать представление, как это:
CREATE VIEW `v_all_orgs` AS SELECT o1.id AS org, o2.id AS related_to
FROM organizations o1
JOIN organizations o2 ON IsRelated(o1.id, o2.id)
С помощью этих двух, я создал свой необходимый вид в вопрос:
CREATE VIEW `v_all_user_orgs` AS SELECT DISTINCT user_organizations.user_id, v_all_orgs.org as org_id, user_organizations.created_ts
FROM user_organizations JOIN v_all_orgs ON v_all_orgs.related_to = user_organizations.org_id OR v_all_orgs.org = user_organizations.org_id
ORDER BY user_organizations.user_id, v_all_orgs.org
что посмотреть, что нужно? –
Я хочу создать представление, которое содержит user_id и organization_id. – Harikrishnan
u упоминается о 'parent' .. Right ..? Сколько родителей у организации? –