Скажем, у меня 3 таблицы.Базовый дизайн таблицы MySql и SQL-запрос
Projects ---------- projectId PK
SubProject ---------- projectId PK subProjectId PK
В основном все проекты перечислены в таблице проектов. Проект может иметь подпроекты. Так, например, если у меня есть следующие строки в моей таблице:
Projects ---------- 1 2 3
SubProjects ---------- 1,2 1,3
Есть три проекта 1,2 и 3. Проекты 2 и 3 подпроектов проекта 1.
У меня есть два вопроса. Во-первых, должны ли внешние ключи быть projectId в проектах, ссылающихся на projectId и subProjectId в SubProjects, или если внешние объекты будут projectId в подпроектах, ссылающихся на projectId в проектах и subProjectId в подпроектах, ссылающихся на projectId в проектах.
Следует отметить, что проект может быть подпроектом для нескольких проектов.
Во-вторых, как получить субпроекты проекта с запросом. Я использую:
Select * from projects p1 Join subProjects sp Join projects p2
where p1.projectId = sp.subProjectId and sp.subProjectId = p2.projectId;
я получаю следующий результат:
1 , 2 1 , 3
Я хочу, чтобы это просто вернуть
2 3
Спасибо за ответ. У меня есть вопрос. Что касается случая, когда проект является субпроектом более чем из 1 проекта. Например, если есть три проекта 1,2,3. Скажем, 3 является подпроектом 2 и 1. Как это можно моделировать? – user489041
Создав систему, основанную на древовидной структуре, я также предложил бы реализовать [Измененный обход дерева предзаказов] (http://www.sitepoint.com/hierarchical-data-database-2/). Вкус хороший и прекрасно работает. – bluevector