SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.03.2022 23:14:50

uProger
Участник
Зарегистрирован: 22.03.2022
Сообщений: 1

Сложный запрос(запросы)ю построение диалога

Ситуация следущая.

в базе храниться информация о некотором числе диалогов(тикеты)

тоесть отдельно юзеры отдельно агенты отдельно вопросы пользователей отдельно ответы операторов, отдельно вложения(прикреплённые к сообщениям)

Как из этотго всего построить диалог(отобразить на странице?) вариант в лоб выбрать несколькими запросами ввсю инфу но номеру диалога а потом в коде раставить по местамю но както топорно и потенциально долго. можноли как нибудь по изящнее?

примерные структуры таблиц прилагаются(подскажите хотя бы общее направление)


CREATE TABLE `clients` (
  `client_id` int(11) NOT NULL,
  `first_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(56) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Pass!12345@',
  `phone` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `avatar` varchar(256) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `clients`
  ADD PRIMARY KEY (`client_id`);

ALTER TABLE `clients`
  MODIFY `client_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=18;
COMMIT;


++++++++++++++++++++


CREATE TABLE `tickets` (
  `ticket_id` int(11) NOT NULL,
  `client_id` int(11) NOT NULL,
  `agent_id` int(11) DEFAULT NULL,
  `wlabel_id` int(11) NOT NULL,
  `level` enum('high','medium','low') COLLATE utf8_unicode_ci NOT NULL,
  `mode` enum('created','complited','open','answered','close','arhived') COLLATE utf8_unicode_ci NOT NULL,
  `title` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `date_creation` timestamp NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `tickets`
  ADD PRIMARY KEY (`ticket_id`);


ALTER TABLE `tickets`
  MODIFY `ticket_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


+++++++++++++++++++


CREATE TABLE `users` (
  `user_id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  `first_name` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
  `last_name` varchar(36) COLLATE utf8_unicode_ci NOT NULL,
  `nickname` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `email` varchar(56) COLLATE utf8_unicode_ci NOT NULL,
  `password` varchar(16) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Pass!12345@',
  `phone` varchar(16) COLLATE utf8_unicode_ci NOT NULL,
  `avatar` varchar(256) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `users`
  ADD PRIMARY KEY (`user_id`);

ALTER TABLE `users`
  MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;
COMMIT;


++++++++++++++++++++++++++


CREATE TABLE `responses` (
  `response_id` int(11) NOT NULL,
  `agent_id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `attachment_id` int(11) DEFAULT NULL,
  `data_creation` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  `content` text COLLATE utf8_unicode_ci NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `responses`
  ADD PRIMARY KEY (`response_id`);

ALTER TABLE `responses`
  MODIFY `response_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


++++++++++++++++++++++++++


CREATE TABLE `messages` (
  `message_id` int(11) NOT NULL,
  `client_id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `date_creation` timestamp NOT NULL DEFAULT current_timestamp(),
  `content` text COLLATE utf8_unicode_ci NOT NULL,
  `status` tinyint(1) NOT NULL DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `messages`
  ADD PRIMARY KEY (`message_id`);

ALTER TABLE `messages`
  MODIFY `message_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


+++++++++++++++++++++++++++++


CREATE TABLE `attachments` (
  `attachment_id` int(11) NOT NULL,
  `type` enum('image','file','archive','geodata','contact','accaunt') COLLATE utf8_unicode_ci DEFAULT NULL,
  `name` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `path` varchar(256) COLLATE utf8_unicode_ci NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `agent_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;


ALTER TABLE `attachments`
  ADD PRIMARY KEY (`attachment_id`);

ALTER TABLE `attachments`
  MODIFY `attachment_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;


+++++++++++++++++++++++


CREATE TABLE `notes` (
  `note_id` int(11) NOT NULL,
  `agent_id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `content` text COLLATE utf8_unicode_ci NOT NULL,
  `date_createtoin` timestamp NOT NULL DEFAULT current_timestamp(),
  `type` enum('private','public') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'private'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

ALTER TABLE `notes`
  ADD PRIMARY KEY (`note_id`);

ALTER TABLE `notes`
  MODIFY `note_id` int(11) NOT NULL AUTO_INCREMENT;
COMMIT;
 

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson