Здесь много чего происходит, но это не ошеломляет. Займитесь этим понемногу.
Очевидно, что первоначальный запрос может использовать объединения для получения всех результатов из трех таблиц, которые соответствуют указанным значениям запроса. Однако я бы начал с того, что поставил под сомнение ваше обоснование трех отдельных таблиц базы данных, поскольку оно нарушает основной принцип реляционной базы данных - повторяющиеся поля и, возможно, повторяющиеся данные, если один человек исполняет две разные роли (классика: «маловероятно, но в теории возможная ситуация ") Каждый человек - человек, и у каждого будут одинаковые требования к данным, такие как имя, фамилия, адрес, город и т. д. Итак, почему бы не хранить информацию о человеке в таблицу, а затем либо есть отдельная таблица, которая определяет человека по идентификатору для отношения, либо поочередно имеет поле в базе данных "человек", которое определяет их роль? В конечном счете, чтобы это работало, у вас должен быть какой-то общий идентификатор, на который система может посмотреть, чтобы сказать ему, какую роль играет этот человек.
Если вы хотите остаться с существующей структурой, я бы подумал, что вам нужно будет выполнить сложное объединение, в котором псевдонимы из каждой таблицы будут иметь имя поля, например Owner_id, которое вы затем сможете использовать для принятия решения на какой таблице. они принадлежат .... не эффективно!
Я бы лично запросил информацию в jQuery Datatables , которая в настоящее время является самой многофункциональной сеткой. У него есть редактируемые регионы, доступные и работающие хорошо. Хитрость к этому на стороне пользовательского интерфейса состоит в том, чтобы инициализировать таблицу данных с пустым набором результатов, исходящим из источника ajax, а затем «обновить» его с помощью команды oTable.fnDraw(false);
Наконец, для сохранения я бы взял идентификатор сохраненного значения, а jQuery Ajax сохранил его в сценарии. Я бы запустил поиск в БД по этому идентификатору, чтобы увидеть, какие у него отношения, и именно здесь лучшая нормализация позволила бы вам просто делать запросы на основе их статуса отношений (владелец, менеджер или арендатор), чтобы получить это значение. Оттуда запустите обновление БД на основе вычисленного идентификатора и имени таблицы и циклически переведите представление, чтобы показать успешность и вернуться к «главному экрану»